在Unity3d中更改SpriteRenderer的颜色
本文关键字:SpriteRenderer 颜色 Unity3d | 更新日期: 2023-09-27 18:26:19
我有一个方法,可以从预设的颜色数组中随机选择一种颜色。
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);
Unity Documentation说,您需要r、g和b参数在0f到1f的范围内。所以你基本上可以把r,g和b除以256。
直接从Unity Scripting API中提取:
颜色
UnityEngine 中的结构
说明
RGBA颜色的表示。
整个Unity都使用这种结构来传递颜色。每个颜色分量都是一个浮点值,其范围从0到1。
以下是文档链接:Unity脚本API