我有一个有多轮的游戏。每一轮都有一个不同的地图,在该轮结束时,从场景列表中加载随机场景。我有一个类似的场景列表:
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
。
感谢您的帮助!
答案 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;