在 Unity3D 中制作渐变并根据该渐变更改颜色 - C# 脚本

5 c# gradient colors unity-game-engine

我希望能够使用 C# 脚本创建一个颜色渐变栏,如下所示:在此输入图像描述

然后我想说如果我的数字在 (0.8 - 1.0) 范围内,则使我的对象呈现渐变中显示的红色阴影。

我不知道如何解决这个问题。现在我只有两种纯色。我有:

myGameObject.GameComponent<Renderer>().material.color = Color.red;
Run Code Online (Sandbox Code Playgroud)

为正值,蓝色为负值。

任何帮助,将不胜感激。

Dou*_*yer 6

参见Unity的GradientGradientColorKey[]您可以创建和-列表GradientAlphaKey并设置每个颜色/时间值。为了您的目的,我将使用:

    Gradient g = new Gradient();
    GradientColorKey[] gck = new GradientColorKey[2];
    GradientAlphaKey[] gak = new GradientAlphaKey[2];
    gck[0].color = Color.red;
    gck[0].time = 1.0F;
    gck[1].color = Color.blue;
    gck[1].time = -1.0F;
    gak[0].alpha = 0.0F;
    gak[0].time = 1.0F;
    gak[1].alpha = 0.0F;
    gak[1].time = -1.0F;
    g.SetKeys(gck, gak);
    myGameObject.GameComponent<Renderer>().material.color = g.Evaluate(1);
Run Code Online (Sandbox Code Playgroud)

这将为您提供Color与中的数字相对应的值g.Evaluate(),因此您应该将时间参数更改g.Evaluate(1)为变量或您想要的任何内容。如果您获得透明或黑色纹理,请尝试更改alpha中的值gak。希望这有帮助:)

  • 嘿,回复很晚了,但我弄清楚代码出了什么问题。参数“时间”实际上是从 0-1 (0-100%) 的浮点百分比。任何大于 1 的值都被钳位在 1 处,任何小于 0 的值都被钳位在 0 处。因此,对于此解决方案,红色应为 1,蓝色应为 0。评估调用还使用相同的百分比以及 0-1 之间的浮点数。所以任何更大或更小的结果都会是 1 或 0。 (2认同)