Unity中如何通过脚本访问Shader Graph的Alpha属性?
解决Shader Graph透明属性的脚本访问问题
- 核心问题:你之前报错是因为Shader Graph里的属性名称并非Unity默认的
_Color,必须用Shader Graph中定义的**Reference(引用名)**来访问属性。
步骤1:确认属性的正确引用名
打开你的Shader Graph,找到控制透明度的对应属性(通常是带Alpha通道的基础颜色属性,或是单独的Alpha滑块属性):
- 在Blackboard面板选中该属性
- 查看Inspector面板里的Reference字段,这个字符串就是脚本中要使用的属性名(比如
_BaseColor、_MainAlpha等)
步骤2:脚本中访问属性的正确写法
根据属性类型选择对应方法:
情况1:通过带Alpha的颜色属性控制透明度
先获取当前颜色,修改Alpha通道后重新赋值:
// 获取Renderer组件 Renderer objRenderer = OBJ.GetComponent<Renderer>(); // 替换成你自己的属性引用名 Color targetColor = objRenderer.material.GetColor("_BaseColor"); // 设置透明度(0完全透明,1完全不透明) targetColor.a = 0.6f; // 重新赋值颜色 objRenderer.material.SetColor("_BaseColor", targetColor);
情况2:通过单独的Float类型Alpha属性控制透明度
直接用SetFloat方法赋值:
Renderer objRenderer = OBJ.GetComponent<Renderer>(); // 替换成你自己的属性引用名 objRenderer.material.SetFloat("_MainAlpha", 0.4f);
注意事项
- 使用
material会创建材质实例,修改后不会影响其他使用该材质的对象;如果要批量修改所有同材质对象,改用sharedMaterial。
内容的提问来源于stack exchange,提问作者Amarth Gûl
相关产品推荐
相关产品推荐

