0

我有一个StartupScript,我想在每次场景(重新)加载时运行。

当我加载场景 1 时,脚本运行。
当我加载场景 2 时,脚本运行。
当我回到场景 1 时,脚本没有运行。

每次加载场景时如何强制启动脚本运行?

该脚本存在于每个场景中,在预制StartScriptHolder上。

我正在查看 SceneManager:也许通过创建和删除场景的命名实例,我可以强制每次生成StartupScript ?
仅仅为了运行单个脚本而创建和丢弃完整的场景似乎非常低效。

4

1 回答 1

1

我不知道您如何处理场景之间的交换。您是否尝试过使用 SceneManager 中的 UnloadSceneAsync?(https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.UnloadSceneAsync.html

我正在一个项目中工作,我必须这样做。我卸载了一个场景,如果我再次加载它,我需要再次运行 Start 函数。

    SceneManager.LoadScene("SceneName", LoadSceneMode.Additive); //Loading the new scene
    SceneManager.UnloadSceneAsync(val); // Unloading current scene

在这种情况下,我正在做的是按其名称和附加模式加载新场景(这是我的要求,但您可以使用其他模式加载它。之后我使用我建议您使用的函数作为参数场景的 ID。您可以在构建设置窗口中找到此 ID。构建设置 窗口

于 2021-05-18T07:36:45.740 回答