我有这种方法从预设的颜色数组中选择一种随机颜色。
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);
答案 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