团结 - 在产卵时获得随机颜色

问题描述 投票:3回答:2

我有一个小问题....我想在我的场景中产生四边形,它们都应该是红色或绿色作为材质。但Random.Range函数只会是int,我怎么能解决它?

void SpawningSquadsRnd()
    {
        rndColor[0] = Color.red;
        rndColor[1] = Color.green;

        for (int i = 0; i < 5; i++)
        {
            GameObject quad = Instantiate(squadPrefab, new Vector3(Random.Range(- 23, 23), 1.5f, Random.Range(-23, 23)), Quaternion.identity);
            int index = Random.Range(0, rndColor.Length);

            quad.gameObject.GetComponent<Renderer>().material.color = //Random.Range(0, rndColor.Length);
        }
    }
c# unity3d random spawn
2个回答
3
投票

如果你只想要红色和绿色,你可以使用这样的基本if和else结构来实现它:

    int index = Random.Range(0, 1);
    if(index == 1)
    {
        quad.gameObject.GetComponent<Renderer>().material.color = new Color(1, 0, 0);
    }
    else
    {
        quad.gameObject.GetComponent<Renderer>().material.color = new Color(0, 1, 0);
    }

如果你想要更好的东西,你可以在0到1之间随机浮动,然后在颜色之间进行Lerp,如下所示:

    float index = Random.Range(0, 1);
    quad.gameObject.GetComponent<Renderer>().material.color = Color.Lerp(Color.red, Color.green, index);

如果你想完全随机化着色,你也可以使用它。但是,它可以为您提供有限的颜色控制。

 quad.gameObject.GetComponent<Renderer>().material.color = Random.ColorHSV();

ColorHSV方法有几个重载,让你可以控制颜色,如使用hueMinhueMax

另一种控制颜色的选择可以是@Szymon所说的具有大量颜色的颜色数组,并随机指向0和该数组长度之间的索引。


2
投票

为了获得随机颜色,请尝试:

var randomColor = rndColor[new Random().Next(0,rndColor.Length)]

通过这种方式,您将获得随机索引,从而得到数组中的随机颜色。

© www.soinside.com 2019 - 2024. All rights reserved.