学习文档:使用MaterialPropertyBlock来替换Material属性操作
上面文档没说到的用法
学习一,怎么做UV偏移:
public MeshRenderer rd;
// Start is called before the first frame update
void Start() {
MaterialPropertyBlock prop = new MaterialPropertyBlock();
rd.GetPropertyBlock(prop);
//设置UV偏移 ,Vector(Tilling.X,Tilling.Y,Offset.X,Offset.Y);
prop.SetVector("_MainTex_ST", new Vector4(1, 1, 0.110f, -0.125f));
rd.SetPropertyBlock(prop);
}
学习二,怎么查属性名称:
选中材质球,右键,Edit Shader ,就可以在Inspector里看到基础的shader属性了。
学习三,MaterialPropertyBlock & Meterial
从FrameDebug里看到,MaterialPropertyBlock并不是每次修改都生成一个材质球的复制品的,这是和Meterial最大的区别。其次具备同样的修改后属性的物体,能够被动态批处理识别,而修改后具备不同属性的物体,则无法合批处理。这里我也不能判断MaterialPropertyBlock有没有做出复制的操作,不过得出了另一个知识点,具备不同属性的材质球,是无法合批的,哪怕只是修改了uv这种不影响整体贴图的属性,也一样会导致无法合批,修改颜色之类的就更是如此了,但具体的原因,由于知识储备不足,我并不能理解。
网友评论