数组随机颜色不生成

时间:2015-12-01 08:30:30

标签: c# unity3d

当我声明随机颜色数组时,我遇到了一个问题。它在游戏开始时显示粒子系统中的随机颜色,但每次游戏开始时它都会显示白色。我不知道为什么会这样,我没有在我的阵列中设置白色。

public class A : MonoBehaviour 
{       
   Color[] colors = {
   new Color (170, 7, 107),
   new Color (58, 96, 115),
   new Color(81, 99, 149),
   new Color(71, 118, 231)
};

void start()
{
   GetComponent<ParticleSystem>().startColor =  colors[Random.Range(0, colors.Length)];
}

3 个答案:

答案 0 :(得分:3)

在Unity中,颜色的ARGB组件介于0.0到1.0之间。所以任何&gt; 1都会被认为是1,因此所有颜色都是白色的。

要转换颜色,请将每个组件除以255.您可以自己执行此操作,也可以将其留给代码本身。另外,不要忘记施放为浮动。感谢 @Masih Akbari 提醒我这件事。

所以,它应该是:

Color[] colors = {
    new Color (170f/255, 7f/255, 107f/255),
    new Color (58f/255, 96f/255, 115f/255),
    new Color(81f/255, 99f/255, 149f/255),
    new Color(71f/255, 118f/255, 231f/255)
}

答案 1 :(得分:1)

原因是Unity中的颜色已标准化。你必须将你设置的每个浮点数除以255得到实际值,例如

Color[] colors = {

    new Color (170/255, 7/255, 107/255),
    new Color (58/255, 96/255, 115/255),
    new Color(81/255, 99/255, 149/255),
    new Color(71/255, 118/255, 231/255)
};

答案 2 :(得分:0)

您的颜色值必须介于0到1之间.1之后的所有内容都被视为白色。

不要忘记将您的号码转换为浮动