Unity5 Unity 5.5.1-加载最后一级?

Unity5 Unity 5.5.1-加载最后一级?,unity5,Unity5,嗯,这应该比现在简单得多!或者我被自己的无知蒙蔽了双眼 我想要的是得到最后一个可玩关卡的字符串名称的方法 澄清: 所有可玩的关卡都有顺序名称——“关卡01”到“关卡100” 所有不可播放的场景都被命名为“开始菜单”和“级别完成”。这些场景包含“主菜单”和“重播最后一级”等按钮 我没有使用UI系统,也不希望这样做。相反,我用对撞机设置对象,并使用我的游戏机制充当“按钮”。例如,当玩家按下名为“Replay Last Level”的按钮时,OnCollisionInter2D应加载播放的最后一个关卡

嗯,这应该比现在简单得多!或者我被自己的无知蒙蔽了双眼

我想要的是得到最后一个可玩关卡的字符串名称的方法

澄清:

所有可玩的关卡都有顺序名称——“关卡01”到“关卡100”

所有不可播放的场景都被命名为“开始菜单”和“级别完成”。这些场景包含“主菜单”和“重播最后一级”等按钮

我没有使用UI系统,也不希望这样做。相反,我用对撞机设置对象,并使用我的游戏机制充当“按钮”。例如,当玩家按下名为“Replay Last Level”的按钮时,OnCollisionInter2D应加载播放的最后一个关卡

每当玩家完成或丢失一个关卡时,他们会被带到“LevelCompleted”并显示一些游戏统计数据(分数、次数等)。他们有三个选择:“主菜单”、“重播最后一级”和“继续”

我需要的只是一个字符串变量,该变量始终包含以前加载的可播放级别的名称(即名称类似于“level_01”而不是“Start Menu”的级别)

然后,我将使用该字符串在适当的位置输入GameManager脚本。播放的最后关卡将在玩家拍摄“重播最后关卡”时加载。当玩家射击“继续”时,我想玩下一个可玩的关卡

这么简单的概念:我刚刚失去了“02级”。我现在在“LevelCompleted”中。我拍摄“重播最后关卡”。我再次进入“02级”。相反,如果我拍摄“继续”,它会将我带到下一个可玩的关卡,在本例中,如果该关卡已解锁,则为“03级”。如果未解锁,则“继续”按钮将带我返回“level_02”


顺便说一句,我在一个空的游戏对象上有一个GameManager脚本。这是一个坚持到每一个场景的单身汉。在这个脚本中有两个类——一个是主公共类,它是singleton,用更大的数组处理大量数据——另一个只是一个可序列化的“公共类GameData”。它只包含写入文件的变量,然后在游戏过程中根据需要重新加载。

因此,通常情况下,答案比我想象的要简单得多

在Gamemanager脚本中,我设置了一个公共静态字符串变量“currentLevel”

然后,在《觉醒》中,我这样做了:

    Scene scene = SceneManager.GetActiveScene();
    if (scene.name != "LevelCompleted")
    {
        currentLevel = scene.name;
    }
我意识到我的“LevelCompleted”场景永远不会被另一个“不可播放”的场景(如“开始菜单”)打开,它只会被一个可播放的场景(如“level_xx”)打开。通过使用条件,它确保当场景“LevelCompleted”打开时,singleton GameManager不会更新该变量,因此该变量将始终包含上次播放的可玩级别

在场景“LevelCompleted”中,在按钮“Replay Last Level”中,我有:

private string lastLevelPlayed;

void OnCollisionEnter2D(Collision2D collision)
{
    lastLevelPlayed = GameManager.currentLevel;
    SceneManager.GetSceneByName(lastLevelPlayed);
}