在 Unity3D 中制作渐变并根据该渐变更改颜色 - C# 脚本
Making a gradient and change colors based on that gradient in Unity3D - C# Script
我希望能够使用 C# 脚本创建颜色渐变条,如下所示:
然后我想说如果我的数字在范围 (0.8 - 1.0) 内使我的对象变成渐变中显示的红色阴影。
我不确定如何处理这个问题。现在我只有两种纯色。我有:
myGameObject.GameComponent<Renderer>().material.color = Color.red;
表示正值,蓝色表示负值。
如有任何帮助,我们将不胜感激。
参见 Unity's Gradient
class。您可以创建 GradientColorKey[]
和 GradientAlphaKey
的列表 - 并设置每个 color/time 值。为了您的目的,我会使用:
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);
这将为您提供 Color
对应于 g.Evaluate()
中的数字,因此您应该将 g.Evaluate(1)
中的时间参数更改为变量或任何您想要的。如果您获得透明或黑色纹理,请尝试更改 gak
中的 alpha
值。希望这对您有所帮助:)
我希望能够使用 C# 脚本创建颜色渐变条,如下所示:
然后我想说如果我的数字在范围 (0.8 - 1.0) 内使我的对象变成渐变中显示的红色阴影。
我不确定如何处理这个问题。现在我只有两种纯色。我有:
myGameObject.GameComponent<Renderer>().material.color = Color.red;
表示正值,蓝色表示负值。
如有任何帮助,我们将不胜感激。
参见 Unity's Gradient
class。您可以创建 GradientColorKey[]
和 GradientAlphaKey
的列表 - 并设置每个 color/time 值。为了您的目的,我会使用:
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);
这将为您提供 Color
对应于 g.Evaluate()
中的数字,因此您应该将 g.Evaluate(1)
中的时间参数更改为变量或任何您想要的。如果您获得透明或黑色纹理,请尝试更改 gak
中的 alpha
值。希望这对您有所帮助:)