unity3d 如何在Unity中处理场景加载事件

rjzwgtxy  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(158)

我知道我可以从MonoBehaviour继承并向SceneManager.sceneLoaded添加一些处理函数,如官方文档https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager-sceneLoaded.html中所述。
我的问题是,我是否需要在场景中创建一个空的游戏对象,并在该游戏对象上附加一个脚本来完成这些工作?或者有其他更好的做法?

b5lpy0ml

b5lpy0ml1#

这是一个很好的实践。创建一个SceneManagerGameObject。附加一个继承自MonoBehaviour的脚本,并在其中处理所有与场景相关的操作。
非常清晰,直奔主题。

wljmcqd8

wljmcqd82#

是的,这是一条路。
必须为此要求GameObject
例如,您还可以使用[RuntimeInitializeOnLoadMethod]并在其中附加侦听器,然后进一步处理它。

public static class SomeClass
{
    [RuntimeInitializeOnLoadMethod]
    private static void Init()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

    private static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        Debug.Log("OnSceneLoaded: " + scene.name);
        Debug.Log(mode);
    }
}

什么是“更好”当然在很大程度上取决于您的使用情形和要求

相关问题