ShaderGraph材质颜色变化

时间:2018-09-09 13:16:23

标签: c# unity3d shader

我制作了一个ShaderGraph Shader,并将其应用于材质。在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);

我做错了什么?

谢谢

2 个答案:

答案 0 :(得分:1)

使用自定义着色器时,属性的名称可能不同

基于screenshot in your other question,您的color属性被命名为“ Color”而不是“ _Color”,尽管很难看到(由于某种原因,您缩放了该问题的图像),而且我不知道哪种ShaderGraph实际输出的代码(例如,它可能只是一个颜色节点,其实际内部名称类似于“ _Node-2389”)。

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

Shader settings

赞:

Shader properties

答案 1 :(得分:0)

好,我发现了

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

enter image description here

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

    material.SetColor("_Color", new Color());