Unity5 Unity 5.5.1-加载最后一级?
嗯,这应该比现在简单得多!或者我被自己的无知蒙蔽了双眼 我想要的是得到最后一个可玩关卡的字符串名称的方法 澄清: 所有可玩的关卡都有顺序名称——“关卡01”到“关卡100” 所有不可播放的场景都被命名为“开始菜单”和“级别完成”。这些场景包含“主菜单”和“重播最后一级”等按钮 我没有使用UI系统,也不希望这样做。相反,我用对撞机设置对象,并使用我的游戏机制充当“按钮”。例如,当玩家按下名为“Replay Last Level”的按钮时,OnCollisionInter2D应加载播放的最后一个关卡 每当玩家完成或丢失一个关卡时,他们会被带到“LevelCompleted”并显示一些游戏统计数据(分数、次数等)。他们有三个选择:“主菜单”、“重播最后一级”和“继续” 我需要的只是一个字符串变量,该变量始终包含以前加载的可播放级别的名称(即名称类似于“level_01”而不是“Start Menu”的级别) 然后,我将使用该字符串在适当的位置输入GameManager脚本。播放的最后关卡将在玩家拍摄“重播最后关卡”时加载。当玩家射击“继续”时,我想玩下一个可玩的关卡 这么简单的概念:我刚刚失去了“02级”。我现在在“LevelCompleted”中。我拍摄“重播最后关卡”。我再次进入“02级”。相反,如果我拍摄“继续”,它会将我带到下一个可玩的关卡,在本例中,如果该关卡已解锁,则为“03级”。如果未解锁,则“继续”按钮将带我返回“level_02”Unity5 Unity 5.5.1-加载最后一级?,unity5,Unity5,嗯,这应该比现在简单得多!或者我被自己的无知蒙蔽了双眼 我想要的是得到最后一个可玩关卡的字符串名称的方法 澄清: 所有可玩的关卡都有顺序名称——“关卡01”到“关卡100” 所有不可播放的场景都被命名为“开始菜单”和“级别完成”。这些场景包含“主菜单”和“重播最后一级”等按钮 我没有使用UI系统,也不希望这样做。相反,我用对撞机设置对象,并使用我的游戏机制充当“按钮”。例如,当玩家按下名为“Replay Last Level”的按钮时,OnCollisionInter2D应加载播放的最后一个关卡
顺便说一句,我在一个空的游戏对象上有一个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);
}