OnSceneLoaded没有在场景启动时调用

时间:2018-04-11 18:07:22

标签: c# unity3d delegates scene

我无法理解为什么在OnEnable被调用时没有调用SceneManager.sceneLoaded += OnSceneLoaded;。我做错了吗?我正在通过在控制台中查找来自Debug.Log("Current scene index is: " + scene.buildIndex.ToString());的返回来测试它,但事实并非如此。任何帮助,将不胜感激!谢谢。

// called first
    void OnEnable()
    {
        Debug.Log("OnEnable called");
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    // called second
    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        Debug.Log("Current scene index is: " + scene.buildIndex.ToString());

        switch (scene.buildIndex)
        {
            case 1: // Starting Scene
                StartingSceneIn();
                break;

            case 2: // Selection Scene
                SelectionSceneIn();
                break;

            case 3: // Coloring Scene
                ColoringSceneIn();
                break;

            case 4: // Preview Scene
                StartCoroutine(PreviewSceneIn());
                break;

            default:
                break;
        }
    }

    // called when the game is terminated
    void OnDisable()
    {
        Debug.Log("OnDisable");
        SceneManager.sceneLoaded -= OnSceneLoaded;
    }

2 个答案:

答案 0 :(得分:0)

我有同样的问题。 通过不使用我的GameManager中的“唤醒”功能来修复它。不确定为什么这样做。

答案 1 :(得分:0)

我通过使用以下命令使其工作;

UnityEngine.SceneManagement.SceneManager.sceneLoaded + = OnSceneLoaded;

有或没有唤醒方法..看来我们必须再次添加UnityEngine.SceneManagement。