unity Material的批量修改和单独处理

蹭一波1024的热度,祝大家节日快乐。

Material

unity为我们提供了Material这一模块,使得我们对游戏对象的各种渲染操作更加便捷。

 

一个完整的Material由shader和Texture组成。

shader:整个Material的面板其实都是由对应的shader决定的,这个可视化的部分由unity shader提供。

Texture:在unity中贴图不是必须的,即使没有贴图也不妨碍unity的渲染工作。但是更加复杂的渲染效果还是需要各式贴图配                   合的。

 

批量处理

       在unity的规则中,凡是使用同一个材质球(Material)的游戏物体,只要材质球被修改,不论是静态还是动态的,所有游戏物体都会被改变。

之前博客有提到过:

void Update()
    {
            if (transform.GetComponent<MeshRenderer>().materials[1].color.r > 0)
            {
                transform.GetComponent<MeshRenderer>().materials[1].color -= new Color(1, 0, 0)*Time.deltaTime*0.5f;
            }
            if (transform.GetComponent<MeshRenderer>().materials[1].color.g > 213)
            {
                transform.GetComponent<MeshRenderer>().materials[1].color -= new Color(0,1,0) * Time.deltaTime*0.5f;
            }
    }

 

单独修改

        我们可能会遇见批量生成相同的游戏对象,但是却需要单独修改其中某一个对象的Material,这时就不能用上面的MeshRenderer了,因为MeshRenderer里面存储的Materials指向的是sharedMarerial,即项目工程中材质球的原始属性设置。

GetComponent<Renderer>().material.color = color;

        当使用Renderer.material的时候,每次调用都会生成一个新的material到内存中去,这样修改后就不会影响到其他物体了。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值