У вас может быть простой счетчик static
, например,
private static Color[] colors = new []{
Color.green,
Color.red,
Color.blue,
Color.yellow,
Color.black
};
private static int index = 0;
private void Start()
{
if(index => colors.Length)
{
Debug.LogError("Not enough colors!", this);
return;
}
GetComponent<Renderer>().material.color = colors[index];
index++;
}
Или, если вы хотите, чтобы он был случайным, как вы говорите, например,
private static Color[] colors = new []{
Color.green,
Color.red,
Color.blue,
Color.yellow,
Color.black
};
private static int index = 0;
private void Start()
{
if(index => colors.Length)
{
Debug.LogError("Not enough colors!", this);
return;
}
if(index == 0)
{
// the first time shuffle up the array
var rnd = new Random();
colors = colors.OrderBy((c) => rnd.Next()).ToArray();
}
GetComponent<Renderer>().material.color = colors[index];
index++;
}
Или, если вы действительно хотите это совершенно случайно, вы можете просто сделать (хотя может иметь несколько «одинаковых» или очень похожих результатов)
private void Start()
{
GetComponent<Renderer>().material.color = GetCompletelyRandomColor();
}
private static Color GetCompletelyRandomColor()
{
var r = Random.Range(0f, 1f);
var g = Random.Range(0f, 1f);
var b = Random.Range(0f, 1f);
return new Color(r, g, b);
}