分享

Unity 材质设置属性优化

 勤奋不止 2020-09-01

一般我们修改材质球参数是直接拿对于材质球来设置参数,不过还有优化空间

使用材质球属性块来代替直接修改材质球属性

材质球属性块

材质属性块被用于Graphics.DrawMesh和Renderer.SetPropertyBlock两个API,当我们想要绘制许多相同材质但不同属性的对象时可以使用它。例如你想改变每个绘制网格的颜色,但是它却不会改变渲染器的状态。

我们来看看Renderer这个类,它包含了Material,SharedMaterial这两个属性;GetPropertyBlock,SetPropertyBlock这两个函数,其中两个属性是用来访问和改变材质的,而两个函数是用来设置和获取材质属性块的。我们知道,当我们操作材质共性时,可以使用SharedMaterial属性,改变这个属性,那么所有使用此材质的物件都将会改变,而我们需要改变单一材质时,需要使用Material属性,而在第一次使用Material时其实是会生成一份材质拷贝的,即Material(Instance),而使用材质属性块不会拷贝一份材质球,从而效率更高

下面写个简单的使用方法

  1. int propertyId = Shader.PropertyToID("shader变量");
  2. MaterialPropertyBlock p = null ;
  3. r.GetPropertyBlock(p);
  4. p.SetInt(propertyId, 1);
  5. r.SetPropertyBlock(p);

优化是一点一滴积累出来,为了兼容更多玩家,必须尽可能优化

这里只是记录一下优化

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多