- Unity material的get. / set
material的get方法里面,会判断_material跟_sharedMaterial是否相同,如果相同,返回_material,如果不同,会新建一个_sharedMaterial的拷贝,并赋值给_material和_sharedMaterial。
material的set方法里面会把传入的值赋给_sharedMaterial,并且会再新建一个_sharedMaterial的拷贝,并赋值给_material。(因为值不同,所以get的时候又会新建一个Material。)
- public Material material {
- get {
- if (_sharedMaterial == _material) {
- return _material;
- }
- _material = new Material (_sharedMaterial);
_sharedMaterial = _material;
- return _material;
- }
- set {
- _sharedMaterial = value;
- _material = new Material (_sharedMaterial);
- }
- }
Get的时候保证以Share为准 所以如果两者不相等 new一份share出来 赋值给mat和share 保证两者相同
Set的时候保证share为准,优先设置share,然后new一份出来设置给mat,保证