统一的随机事件?

Random event with in unity?

仅供参考,我对编程和 C# 还很陌生。对不起,如果这个问题看起来很简单。

我有点难以解释我想做什么。所以基本上,有 array/list 个数字。该号码将通过使用 Random.Range() 来选择。每个数字都会有自己的动作,他们会激活。例如,1 号将启动 scene1,2 号将启动 scene2,依此类推。你如何将这个随机选择的数字分配给某个动作?

我什至不知道如何将其放入代码中(使用 array/string?),但基本思路可能如下所示:

int randomNumber = Random.Range(1, 10);

randomNumber[1] = SceneManager.LoadScene(Level1);

randomNumber[2] = SceneManager.LoadScene(Level2);
...

最简单的方法是:

int randomNumber = Random.Range(1, 10);
    
    if(randomNumber == 1) {
        // Load Scene 1
    } else if (randomNumber == 2) {
        // Load Scene 2
    }

编辑:

在这种情况下,您不分配随机数。您检查随机数是否是特定数字。您可以使用 ==.

检查数字是否相等

随机数的值介于 1 和 9 之间,每次您 运行 程序时这个数字都是随机的。

如果你想更动态地做到这一点,你可以看看@derHugo 的答案。取决于您如何使用它以及您必须编写多少 if-else 语句。

请注意 不准确 ;)

上限Random.Range(int,int)独占所以

Random.Range(0, 10)

永远不会 return 10 但值介于 09 之间。


实际上更简单的方法是将所有场景存储在一个数组中,例如

public List<string> scenes = new List<string>();

然后使用

var randomIndex = Random.Range(0, scene.Length);
SceneManager.LoadScene(scenes[randomIndex]);

不需要冗长且不动态的 if-elseswitch-case。 array/list 可以在 Inspector 中甚至在运行时完全动态调整,而无需添加更多案例。