MaterialPropertyBlock mpb = new MaterialPropertyBlock();//最好全局唯一静态对象 Render(MeshRenderer、SpriteRenderer).GetPropertyBlock(mpb); mpb.SetFloat(...)//类似material.SetFloat使用 Render(MeshRenderer、SpriteRenderer).SetPropertyBlock(mpb);
这样更改材质属性不会产生新的材质实例,而是会产生一个新的存储区域在CPU,它配合GPU Instancing使用。
因为GPU Instancing要求同网格同材质,而且不支持SRPBatch(凡是使用MPB的则不可能生效SRPBatch,理由是SRPBatch必须所有改动属性都在GPU的CBuffer中,不然会打破Batch)
标签:mpb,SetFloat,SRPBatch,GPU,MaterialPropertyBlock,材质 From: https://www.cnblogs.com/mcyushao/p/17947844