【问题标题】:ShaderGraph Material Color changeShaderGraph 材质颜色变化
【发布时间】:2019-02-14 03:03:23
【问题描述】:

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

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

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


    【解决方案1】:

    好的,我发现了,

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      像这样:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-07
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 2018-10-27
        相关资源
        最近更新 更多