美文网首页
[Unity3D]MaterialPropertyBlock

[Unity3D]MaterialPropertyBlock

作者: 煎蛋的少年 | 来源:发表于2019-11-08 15:50 被阅读0次

学习文档:使用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这种不影响整体贴图的属性,也一样会导致无法合批,修改颜色之类的就更是如此了,但具体的原因,由于知识储备不足,我并不能理解。

相关文章

网友评论

      本文标题:[Unity3D]MaterialPropertyBlock

      本文链接:https://www.haomeiwen.com/subject/udqwbctx.html