天天看点

不同物体使用同一材质,有不同的表现知识点实现

知识点

材质属性块 MaterialPropertyBlock

设置材质块颜色属性 MaterialPropertyBlock.SetColor

复制一份材质的属性块 Renderer.GetPropertyBlock

设置材质属性块 Renderer.SetPropertyBlock

实现

  1. 通过模型的Render获取材质块;
  2. 设置材质块的颜色属性;
  3. 设置Render的材质块。
using UnityEngine;
public class NotSameDisplay : MonoBehaviour
{
    Renderer render;
    void Start()
    {
        render = GetComponent<Renderer>();
        ChangeMaterilaColor();
    }
    void ChangeMaterilaColor()
    {
        MaterialPropertyBlock newBlock = new MaterialPropertyBlock();
        //render的材质数值复制到newBlock中
        render.GetPropertyBlock(newBlock);
        //参数一:shader中对应的属性名
        //选择材质 点击右上角的齿轮 选择Edit Shader 在Properties块中可以查看
        //参数二:属性对应的值
        newBlock.SetColor("_Color",Color.red);
        //将新值复制到属性中
        render.SetPropertyBlock(newBlock);
    }
}
           

继续阅读