unity材质属性块(MaterialPropertyBlock)使用好处

一.不会更改本地的材质球,不会产生大量的文件变更

1. 更改材质(material)属性: 

        1. 本地材质不变
         2. 如:transform.GetComponent<MeshRenderer>().material.color = new Color(r, g, b);

 2. 更改共享材质(sharedMaterial)属性:

         1. 本地材质会变
          2. 如:transform.GetComponent<Renderer>().sharedMaterial.SetInt("_Emission",1);

3.更改材质属性块(MaterialPropertyBlock):

        1. 本地材质不变
        2. 如:
Renderer _renderer = transform.GetComponent<Renderer>();
MaterialPropertyBlock _propertyBlock = new MaterialPropertyBlock();
_renderer.GetPropertyBlock(_propertyBlock);//获取已有的所有属性
_propertyBlock.SetInt("_Emission",1);//变更要更改的属性
_renderer.SetPropertyBlock(_propertyBlock);//在设置属性

二.性能的提升

1. 更改材质(material)属性: 

        1. unity会new一份新的material,在运行结束后会将新生成的material全部删除
        2. 内存会一直增加

 2.更改共享材质(sharedMaterial)属性:

        1. sharedMaterial是共享材质,无论使用多少次,内存中都只会占用一份内存
         2. 影响其他使用同一材质球的对象,变更本地材质球

3.更改材质属性块(MaterialPropertyBlock):

        1. unity并没有创建material,不影响其他属性
         2. 修改材质属性块要快于直接使用材质

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianshu6698

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值