Unity 5.5.1 - 获取最后一级加载?

问题描述:

好吧,这应该比它简单得多!或者我被我自己的无知所蒙蔽了!Unity 5.5.1 - 获取最后一级加载?

我想要的是获取最后播放级别的字符串名称的一些手段。

澄清:

所有可玩级别给出的顺序名字 - “Level_01” 直通 “Level_100”。

这些场景都包含“主菜单”和“最后一级回放”等按钮,所有非可播放场景都会给出名称,如“开始菜单”和“级完成”。我不使用UI系统,也不希望这样做。相反,我用对撞机设置对象,并使用我的游戏机制充当“按钮”。例如,当玩家拍摄名为“Replay Last Level”的按钮时,OnCollisionEnter2D应该加载上一次播放的级别。

只要玩家完成或失去等级,他们就会被带到“LevelCompleted”并显示一些游戏统计数据(分数,时间等)。他们有三个选择:“主菜单”,“重播上一级”和“继续”。

我需要的仅仅是,总是包含先前加载PLAYABLE级别的名称的字符串变量(即那些喜欢“Level_01”,而不是名称,如“开始菜单”。)

然后,我将使用字符串在适当的地方进入我的GameManager脚本。播放器拍摄“Replay Last Level”时,最后播放的级别将会加载。当玩家发射“继续”时,我想玩下一个可玩的关卡。

非常简单的概念:我刚刚失去了“Level_02”。我现在在“LevelCompleted”中。我拍“重播最后一级”。我再次输入“Level_02”。相反,如果我拍摄“继续”,则会将我带到下一个可播放级别,在此情况下,如果该级别已解锁,则为“Level_03”。如果它没有被解锁,那么“继续”按钮会将我带回“level_02”。

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

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

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

然后在清醒()我这样做:

Scene scene = SceneManager.GetActiveScene(); 
    if (scene.name != "LevelCompleted") 
    { 
     currentLevel = scene.name; 
    } 

我意识到,我的“LevelCompleted”的场景绝不会像“开始菜单”另一种“非可玩”的场景被打开,它不仅会以“Level_xx”之类的可播放级别打开。通过使用条件,它可以确保在打开该场景“LevelCompleted”时,变量不会被单例GameManager更新,因此该变量将始终包含最后播放的可播放级别。

在现场 “LevelCompleted” 按钮,在 “重播最后一级”,我有:

private string lastLevelPlayed; 

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