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