一.不会更改本地的材质球,不会产生大量的文件变更
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. 修改材质属性块要快于直接使用材质