在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);

在Unity3d中更改SpriteRenderer的颜色

Unity Documentation说,您需要r、g和b参数在0f到1f的范围内。所以你基本上可以把r,g和b除以256。

直接从Unity Scripting API中提取:

颜色

UnityEngine 中的结构

说明

RGBA颜色的表示。

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

以下是文档链接:Unity脚本API