【问题标题】:Random numbers in Unity C#Unity C#中的随机数
【发布时间】:2017-04-28 09:27:26
【问题描述】:

这是我的代码:

public class RandomNumbers : MonoBehaviour {
    public Transform mCanvas;
    public Text[] numbers;
    int idx = 0;

    void Start()
    {
        StartCoroutine("CreateNum"); 
    }

    IEnumerator CreateNum()
    {
        while (idx < numbers.Length)
        {
            Text g = Instantiate(numbers[idx], new Vector3(Random.Range(-100, 100), Random.Range(-100, 100), 0), Quaternion.identity);
            g.transform.SetParent(mCanvas, false);
            yield return new WaitForSeconds(2f);
            Destroy(g);
            ++idx;
        }
    }
}

此代码使 4 个文本按升序出现在屏幕上。我希望这四个数字不是以增加的形式出现,而是以随机的形式出现。

【问题讨论】:

标签: c# user-interface unity3d


【解决方案1】:

您需要做的是打乱numbers 的数组,使它们按随机顺序排列,然后您可以按顺序抓取随机列表,它的作用与随机挑选项目相同,无需重复。

public class RandomNumbers : MonoBehaviour {
    public Transform mCanvas;
    public Text[] numbers;
    int idx = 0;

    void Start()
    {
        //Randomizes the list of numbers
        Shuffle(numbers);

        StartCoroutine("CreateNum"); 
    }

    IEnumerator CreateNum()
    {
        while (idx < numbers.Length)
        {
            Text g = Instantiate(numbers[idx], new Vector3(Random.Range(-100, 100), Random.Range(-100, 100), 0), Quaternion.identity);
            g.transform.SetParent(mCanvas, false);
            yield return new WaitForSeconds(2f);
            Destroy(g);
            ++idx;
        }
    }

    //This is called a Fisher-Yates shuffle https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
    //This function can be used with any Array or List you send it.
    private static void Shuffle<T>(IList<T> list)  
    {  
        int n = list.Count;  
        while (n > 1) {  
            n--;  
            int k = Random.Range(0, n + 1);  
            T value = list[k];  
            list[k] = list[n];  
            list[n] = value;  
        }  
    }

}

【讨论】:

  • 现在我添加了一个布尔值来设置出现的数字限制......如何让这 3 个或 4 个或 9 个数字出现聚集?
  • 例如屏幕显示数字2然后4然后8。然后它们将相乘或聚集
猜你喜欢
  • 2017-09-07
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2016-08-01
相关资源
最近更新 更多