ShaderGraph材质颜色变化

问题描述 投票:0回答:2

我制作了一个ShaderGraph着色器,我将其应用于一种材质。在SHader中,我将“public”中的变量Color设置为更改材质颜色。从检查器,如果它不是运行时,它确实有效;

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

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);

我究竟做错了什么 ?

谢谢

c# unity3d shader
2个回答
1
投票

As you are using a custom shader, properties might have different names

基于screenshot in your other question你的颜色属性被命名为“颜色”而不是“_Color”,虽然很难看到(因为某种原因你缩放了该问题的图像)并且我不知道ShaderGraph实际输出什么样的代码(例如它可能只是一个颜色节点,它的实际内部名称就像“_Node-2389”。

如果您点击此按钮然后“编辑着色器”,它将显示有关着色器属性的一些信息,包括每个属性的真实字符串表示。

Shader settings

像这样:

Shader properties


0
投票

好的,我发现了,

它不是属性的名称,而是参考。要查看它,请进入ShaderGraph,然后单击属性,您将在属性参数上找到引用名称(左上角):

enter image description here

使用像这样的参考槽代码更改参数值

    material.SetColor("_Color", new Color());
© www.soinside.com 2019 - 2024. All rights reserved.