C# ShaderGraph材质颜色更改

C# ShaderGraph材质颜色更改,c#,unity3d,shader,C#,Unity3d,Shader,我制作了一个ShaderGraph着色器,应用于材质。在着色器中,我在“public”中添加了一个可变颜色,以更改材质颜色。从检查器来看,如果它不是运行时,它就可以工作 我想在游戏中根据不同的元素改变这种材质的颜色。材质将应用于线条渲染器。我尝试了很多方法,但它从未改变颜色; GetComponent().color;返回RGBA颜色。我试过: LaserLine.material.color=GetComponent().color; LaserLine.startColor=GetComp

我制作了一个ShaderGraph着色器,应用于材质。在着色器中,我在“public”中添加了一个可变颜色,以更改材质颜色。从检查器来看,如果它不是运行时,它就可以工作

我想在游戏中根据不同的元素改变这种材质的颜色。材质将应用于线条渲染器。我尝试了很多方法,但它从未改变颜色;

GetComponent().color;返回RGBA颜色。我试过:
LaserLine.material.color=GetComponent().color;
LaserLine.startColor=GetComponent().color;
LaserLine.endColor=GetComponent().color;
LaserLine.material.SetColor(“\u Color”,GetComponent().Color);
我做错了什么

谢谢

当您使用自定义着色器时,属性可能有不同的名称 基于您的颜色属性名为“color”而不是“_color”,尽管很难看到(因为某些原因,您缩放了该问题的图像),而且我不知道ShaderGraph实际输出的代码类型(例如,它可能只是一个颜色节点,其实际内部名称类似于“_node-2389”)

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

像这样:

使用自定义着色器时,属性可能有不同的名称 基于您的颜色属性名为“color”而不是“_color”,尽管很难看到(因为某些原因,您缩放了该问题的图像),而且我不知道ShaderGraph实际输出的代码类型(例如,它可能只是一个颜色节点,其实际内部名称类似于“_node-2389”)

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

像这样:

好的,我发现了

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

使用参考槽代码更改参数值,如下所示

    material.SetColor("_Color", new Color());
好吧,我发现了

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

使用参考槽代码更改参数值,如下所示

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