在Unity3D-C#脚本中创建渐变并基于该渐变更改颜色

在Unity3D-C#脚本中创建渐变并基于该渐变更改颜色,c#,unity3d,colors,gradient,C#,Unity3d,Colors,Gradient,我也希望能够使用C#脚本创建一个颜色渐变条,如下所示: 然后我想说,如果我的数字在(0.8-1.0)范围内,让我的对象变成渐变中显示的红色阴影 我不知道该怎么做。现在我只有两种纯色。我有: myGameObject.GameComponent<Renderer>().material.color = Color.red; myGameObject.GameComponent().material.color=color.red; 蓝色表示正值,蓝色表示负值 任何帮助都将不胜感激

我也希望能够使用C#脚本创建一个颜色渐变条,如下所示:

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

我不知道该怎么做。现在我只有两种纯色。我有:

myGameObject.GameComponent<Renderer>().material.color = Color.red;
myGameObject.GameComponent().material.color=color.red;
蓝色表示正值,蓝色表示负值

任何帮助都将不胜感激

见。您可以创建
GradientColorKey[]
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);
Gradient g=新梯度();
GradientColorKey[]gck=新的GradientColorKey[2];
GradientAlphaKey[]gak=新的GradientAlphaKey[2];
gck[0].color=color.red;
gck[0]。时间=1.0F;
gck[1].color=color.blue;
gck[1]。时间=-1.0F;
gak[0].alpha=0.0F;
gak[0]。时间=1.0F;
gak[1]。alpha=0.0F;
gak[1]。时间=-1.0F;
g、 设置键(gck、gak);
myGameObject.GameComponent().material.color=g.Evaluate(1);

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

什么是alpha?我的时间可以是多少?(例如,在-6000到6000之间?)它看起来也不像是在通过梯度。只是在颜色之间忽隐忽现。除非我的变化不足以see@2222Alpha是纹理的“透明度”。不幸的是,我不确定相对α应该是什么。也许可以尝试将
gck[1].time
设置为0而不是负1,并将
gak[0]
设置为1.0F?
渐变
是用来迭代颜色的,所以它应该可以做你想做的事情,尽管我自己没有太多的经验。无论如何,谢谢。我的意思是我在这里也看到了这个代码,但我会尝试不同的方法,看看它是否有效。我的意思是,我觉得它应该可以工作。:/嘿,这是一个相当晚的答复,但我发现代码出了什么问题。参数“时间”实际上是0-1(0-100%)的浮动百分比。大于1的任何对象都将被钳制为1,小于0的任何对象将被钳制为0。所以对于这个溶液,红色应该是1,蓝色应该是0。evaluate调用还使用相同的百分比,浮动范围为0-1。因此,任何较大或较小的值都将导致1或0。