在Unity3d中更改SpriteRenderer的颜色

时间:2015-12-09 11:23:05

标签: c# unity3d

我有这种方法从预设的颜色数组中选择一种随机颜色。

 public Color GetRandomColor()
 {
     return colors[rand.Next(0, colors.Length)];               
 }

然后我在另一个类

中使用它
public void RandomizeColors()
{
    for(int i = 0; i< spriteRenderers.Length; i++)
    {    
        spriteRenderers[i].color = rColors.GetRandomColor();
    }
}

问题是精灵渲染器的颜色都设置为一些奇怪的值。 RGB设置为数千个。

如果我使用spriteRenderers[i].color = Color.black例如它可以正常工作。

我检查了GetRandomColor()的返回值,它们都是正确的。我在哪里做错了?

修改 颜色的数组。这是构造函数的一部分:

colors = new Color[7];
colors[0] = new Color(87f,72f,161f) ;
colors[1] = new Color(39f,145f,221f);
colors[2] = new Color(233f,191f,57f);
colors[3] = new Color(238f,133f,57f);
colors[4] = new Color(238f,71f,46f);
colors[5] = new Color(193f,57f,235f);
colors[6] = new Color(104f,176f,58f);

2 个答案:

答案 0 :(得分:3)

Unity Documentation表示你需要让r,g和b参数在0f到1f的范围内。所以你基本上可以将你的r,g和b除以256。

答案 1 :(得分:2)

直接从Unity Scripting API中提取:

  

颜色

     UnityEngine中的

结构

     

描述

     

RGBA颜色的表示。

     

这种结构在整个Unity中用于传递颜色。每个颜色分量都是一个浮点值,范围从 0到1

以下是文档的链接: Unity Scripting API