ShaderGraph 材质颜色变化

我制作了一个 ShaderGraph 着色器,并将其应用于材质。在着色器中,我在“public”中放入了一个变量 Color 以更改材质颜色。从检查器来看,如果它不是运行时,它确实可以工作;

我想在游戏过程中根据不同的元素来改变这个材质的颜色。材质应用于 lineRenderer。我尝试了很多方法,但它永远不会改变颜色;

http://img2.mukewang.com/61da94e800012f7c19180849.jpg

GetComponent<EnemyType>().color; return a RGBA color. I tried :


     LaserLine.material.color = GetComponent<EnemyType>().color;

     LaserLine.startColor = GetComponent<EnemyType>().color;

     LaserLine.endColor = GetComponent<EnemyType>().color;

     LaserLine.material.SetColor("_Color", GetComponent<EnemyType>().color);

我究竟做错了什么 ?


繁星coding
浏览 795回答 2
2回答

慕桂英4014372

当您使用自定义着色器时,属性可能有不同的名称根据您的另一个问题中的屏幕截图,您的颜色属性被命名为“Color”而不是“_Color”,尽管很难看到(因为出于某种原因,您为该问题缩放了图像)而且我不知道 ShaderGraph 的代码类型实际输出(例如,它可能只是一个颜色节点,其实际内部名称类似于“_Node-2389”)。如果您点击此按钮,然后“编辑着色器”,它将向您显示有关着色器属性的一些信息,包括每个属性的真实字符串表示。像这样:

月关宝盒

好吧,我发现,计数的不是属性的名称,而是引用。要查看它,请进入 ShaderGraph,然后单击属性,您会在属性参数上找到引用名称(左上角):像这样使用参考槽代码更改参数值&nbsp;&nbsp;&nbsp;&nbsp;material.SetColor("_Color",&nbsp;new&nbsp;Color());
打开App,查看更多内容
随时随地看视频慕课网APP