Unity学习之Material和shareMaterial

  • Unity学习之Material和shareMaterial已关闭评论
  • 19,533 views
  • A+
所属分类:Unity3d 原创文章

在游戏中

我们经常需要改变物体的材质

用来适应各种变化和环境


Unity中MeshRenderer提供了两种方式

一个是material和shareMaterial

那么它们有什么区别,又分别有什么作用呢


我们先新建一个场景

创建两个球体两个材质

Unity学习之Material和shareMaterial Unity学习之Material和shareMaterial

普通的材质给与红色,分享型的材质给与蓝色


然后新建脚本修改这两个球体的材质颜色

代码如下

Unity学习之Material和shareMaterial

我通过两个不同的属性

material和shareMaterial来修改它们的颜色

从而使它们的颜色替换


来运行一下,看看结果

Unity学习之Material和shareMaterial

可见,两个球体的颜色已经互换了


那么看看蓝色球体(material)修改的属性

Unity学习之Material和shareMaterial

可以看到材质中有个(Instance)


再来看看红色球体(shareMaterial)修改的属性

Unity学习之Material和shareMaterial

这里并没有(Instance)


最后看看材质的源文件

Unity学习之Material和shareMaterial

....两个都是红的

也就是说通过shareMaterial修改的颜色

真实的修改源文件材质


退出播放

Unity学习之Material和shareMaterial

可见蓝色的恢复了红色

而红色的却还是红色

并没有变回原来的蓝色


由实验可以证明

用material属性进行修改的

Unity将自动的实例化(复制)一份material

然后对复制的那份进行修改

再赋值给MeshRenderer

 

而用shareMaterial修改的

Unity不会自动进行实例化

而是直接对原材质的修改

所以这个属性不能乱用,

用时注意对原有材质的保存

在必要时刻恢复原有材质


对于shareMaterial

就像它的名字那样,分享

由此可知

当有那么一群物体,它们的状态(材质)一起变化

那么就可以使用shareMaterial

修改一个就可以达到所有都被修改的方便

必须注意的是:材质的变化是真的变化

如果要恢复原来样子

必须保存原来的材质