我无法更改 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):
着色器中的颜色设置为自定义名称“_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")
我更改 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):
着色器中的颜色设置为自定义名称“_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")