加载一个随机级别,但不是同一个级别?

时间:2015-12-15 20:32:29

标签: c# random unity3d

我有一个有多轮的游戏。每一轮都有一个不同的地图,在该轮结束时,从场景列表中加载随机场景。我有一个类似的场景列表:

Arena 1
Arena 2
Arena 3
Arena 4
Arena 5

我使用以下代码行随机加载它们:

Application.LoadLevel("Arena " + Random.Range(1, LEVEL_COUNT));

其中LEVEL_COUNT是我拥有的最大场景数。

这样可以正常工作,除非有时圆形结束,刚刚播放的场景重新加载。假如你玩Arena 3并且该轮结束,Arena 3可能会重新加载。

那么,是否可以像我一样加载一个随机场景,但是不加载我们刚刚播放的场景?因此,在这种情况下加载任何内容Arena 3

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

我相信你说你可以重复场景,但不是连续的,这是正确的吗?所以你可以多次玩Arena 3,只要每次都有另一个场景。

如果是这样,那么我会这样做:

//Store the current scene in an integer. Set to zero by default.
int previousScene = 0;

第一次获得随机场景时,可以选择LEVEL_COUNT个场景。但此后,由于你无法重复这个场景,它实际上是LEVEL_COUNT - 1。

//Randomly load the scene
int nextScene;
if(previousScene == 0)
    nextScene = Random.Range(1, LEVEL_COUNT);
else
    nextScene = Random.Range(1, LEVEL_COUNT - 1);

每次RNG返回的级别与前一级别相同或更高时,只需添加1即可。然后存储上一个场景,然后重复。

if(nextScene >= previousScene){
    nextScene = nextScene + 1;
}
Application.LoadLevel("Arena " + nextScene);
previousScene = nextScene;