- A+
在游戏中
我们经常需要改变物体的材质
用来适应各种变化和环境
Unity中MeshRenderer提供了两种方式
一个是material和shareMaterial
那么它们有什么区别,又分别有什么作用呢
我们先新建一个场景
创建两个球体两个材质
普通的材质给与红色,分享型的材质给与蓝色
然后新建脚本修改这两个球体的材质颜色
代码如下
我通过两个不同的属性
material和shareMaterial来修改它们的颜色
从而使它们的颜色替换
来运行一下,看看结果
可见,两个球体的颜色已经互换了
那么看看蓝色球体(material)修改的属性
可以看到材质中有个(Instance)
再来看看红色球体(shareMaterial)修改的属性
这里并没有(Instance)
最后看看材质的源文件
....两个都是红的
也就是说通过shareMaterial修改的颜色
真实的修改源文件材质
退出播放
可见蓝色的恢复了红色
而红色的却还是红色
并没有变回原来的蓝色
由实验可以证明
用material属性进行修改的
Unity将自动的实例化(复制)一份material
然后对复制的那份进行修改
再赋值给MeshRenderer
而用shareMaterial修改的
Unity不会自动进行实例化
而是直接对原材质的修改
所以这个属性不能乱用,
用时注意对原有材质的保存
在必要时刻恢复原有材质
对于shareMaterial
就像它的名字那样,分享
由此可知
当有那么一群物体,它们的状态(材质)一起变化
那么就可以使用shareMaterial
修改一个就可以达到所有都被修改的方便
必须注意的是:材质的变化是真的变化
如果要恢复原来样子
必须保存原来的材质