首页 > 解决方案 > 如何加载正确的场景

问题描述

嘿,我正在为我的游戏制作一个游戏结束屏幕。我希望它获得游戏结束屏幕,然后当玩家死亡时它会重新启动该级别。我以一种低效的方式制作了多个游戏结束屏幕,然后将每个游戏结束连接到他们的场景,这样它就可以重新启动那个场景。我的问题是它仍然进入我的主要级别并跳过教程。代码:

    if (health == 0)
    {

        if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Level 2 - Damages"))

            SceneManager.LoadScene("Gameover 1");

        if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Level 3 - Wall Climbing"))

            SceneManager.LoadScene("Gameover 2");

        if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Level 4 - FallingPlatform"))

            SceneManager.LoadScene("Gameover 3");

        if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Level 5 - Buttons And Switches"))

            SceneManager.LoadScene("Gameover 4");

        if (SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Final Level"))

            SceneManager.LoadScene("Gameover");


    }

标签: c#unity3dscene-manager

解决方案


我真的不明白你的游戏结束场景和你的主要/教程场景之间的相关性是什么但是..

在构建设置中,从文件菜单中,您可以重新排列场景。确保启动/教程/您想要开始的任何场景都位于列表的顶部。

更新; 附言。切换可能也更容易,类似于:

 if (health == 0)
    {
      switch(SceneManager.GetActiveScene()){
       case SceneManager.GetSceneByName("Level 2 - Damages"):
            SceneManager.LoadScene("Gameover 1");
            break;
       case default: 
             SceneManager.LoadScene("MainMenu");
        }
    } 

推荐阅读