我无法更改 material 的 alpha 值。着色器错误

I cannot change alpha value of material. Error in shader

我更改 alpha 值的代码:

Color color = other.gameObject.GetComponent<Renderer>().material.color;
        color = new Color(color.r, color.g, color.b, 0.5f);

        other.gameObject.GetComponent<Renderer>().material.color = color;

尝试更改 alpha 值时出现错误:

我的着色器文件(MultipleUVBlend01):

https://codecollab.io/@proj/OfferChapterBasket#

着色器中的颜色设置为自定义名称“_MainColor”,因此您需要使用 GetColor() 和 SetColor()。

Color color = this.gameObject.GetComponent<Renderer>().material.GetColor("_MainColor");
        color = new Color(color.r, color.g, color.b, 0.5f);
        this.gameObject.GetComponent<Renderer>().material.SetColor("_MainColor", color);

当您访问 material.color 时,Unity 在后台获取并设置着色器的 _Color 属性。 Unity 抛出此错误,因为您使用的着色器没有 _Color 属性 而是 _MainColor

要解决此问题,您有以下几种选择:

  • 在着色器中,在_MainColor的声明之前添加[MainColor]属性
  • 直接访问要调整的 属性 material.GetColor("_MainColor")material.SetColor("_MainColor")