当我们改变实例化出来的物体身上的颜色值或者贴图之类的时候,Unity会把它使用的的ShareMaterial复制一份出来,这样子不同对象使用的相同材质便不会影响。但这样做对于同事修改很多对象的时候,会产生很多材质的实例。
对于这个,我们可以使用使用MaterialPropertyBlock类来操作,话不多数,下面直接上代码。
MaterialPropertyBlock materialPropertyBlock=new MaterialPropertyBlock();
materialPropertyBlock.SetFloat("_Progress", progress);
materialPropertyBlock.SetFloat("_ImpactProgress", impactProgress);
materialPropertyBlock.SetVector("_StartPosition", transform.position);
materialPropertyBlock.SetVector("_EndPosition", endPoint);
materialPropertyBlock.SetFloat("_Distance", HitLength);
materialPropertyBlock.SetFloat("_MaxDist", HitLength);
materialPropertyBlock.SetFloat("_FinalSize", finalSize);
psr.SetPropertyBlock(materialPropertyBlock);