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

本文关键字:一级 随机 加载 一个 | 更新日期: 2023-09-27 18:26:59

我有一个有多个回合的游戏。每个回合都有一个不同的贴图,在回合结束时,从场景列表中加载随机场景。我有一个场景列表,比如:

Arena 1
Arena 2
Arena 3
Arena 4
Arena 5

当回合结束时,我使用以下代码随机加载它们:

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

其中CCD_ 1是我具有的场景的最大数量。

这很好,只是有时当回合结束时,刚刚播放的同一场景会重新加载。假设你玩Arena 3并且回合结束,Arena 3可能会再次重新加载。

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

谢谢你的帮助!

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

我相信你是说你可以重复场景,但不能连续,对吗?所以你可以多次玩竞技场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;