Skinned Mesh Renderer多层材质赋值
Unity中Skinned Mesh Renderer上的材质可以挂多个,而Skinned Mesh Renderer有两个属性可以用来访问材质,一个是material,另一个是materials。
material
第一个属性material是返回材质数组A的第一层材质(下标为0),也可以直接通过给这个属性赋值来改变第一层材质。
materials
第二个属性materials是返回材质数组A,但我们不能直接操作这个数组,因为Unity中返回的数组都是拷贝,所以我们想改变的话需要新建一个材质数组B,然后把B赋给A。
修改材质
Unity这样的设计方式实际上很蠢,我们在很多地方需要自己声明新的数组变量。下面告诉大家不同情况下Unity中材质的正确赋值方法。
修改单层材质的方法:
1 | unit_renderer.material = anotherMat;//修改单层材质只需要直接给material赋值 |
修改多层材质的方法:
1 | Material[] mats = unitRenderer.materials;//先把新建材质数组,值为现有的材质数组 |
也可以使用new方法初始化:Material[] mats = new Materials[]{bodyMat, headMat};
,这种方式是动态初始化。