Random.Range每次调用时都不会改变其结果,为什么?

OmB*_*TeR -2 c# random delegates unity-game-engine

我使用随机范围来选择产生的敌人类型之间.

IEnumerator Spawn()
    {
        int randAmount = UnityEngine.Random.Range(minAmount, maxAmount); // Determine quantity of enemies to be spawned
        int randType = UnityEngine.Random.Range(0, 1); // Determine which enemy is spawned
        enemies[randType](randAmount); // Call enemy type, then amount
        yield return new WaitForSeconds(spawnRate);
        StartCoroutine(Spawn()); // Loop
    }
Run Code Online (Sandbox Code Playgroud)

当与调试器连接到统一时,我可以看到randAmount每次调用协程时都会​​发生变化,但是randType从0开始没有变化,我一直在测试,我开始认为它不再是运气不好.

我知道第一个变量工作正常,无论如何确保第二个变量正常工作,或者每次调用协程时获取0到1之间的随机数的替代方法.

Pro*_*mer 5

Unity的Random.Range第二个参数是独占的,这意味着Unity不包含它.它包括max-1.

如果要在0和之间生成随机数1,则必须传递2给第二个参数.那应该是Random.Range(0, 2).

  • @EpicKip我不回答重复.我关闭所有重复项.**这不是重复的**.您提供的链接与此不重复.1. OP使用`Random.Range`而不是`Random.Next`.2.在Unity中生成随机数与使用C#标准API生成随机数不同.请注意我在此答案中链接的API. (5认同)