Unity性能优化之修改材质属性

当我们改变实例化出来的物体身上的颜色值或者贴图之类的时候,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);

你可能感兴趣的:(Unity3D,Unity,UnityShader,unity,unity3d)