0

我的统一 android 应用程序的 ScenManager 有问题。当我开始一个新场景时,旧场景处于激活状态并且可以工作,但新场景显示为工作。我希望只有新场景才能工作。

// here I load the new Scene
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);

我尝试了很多,但每次我发现旧场景都被原子破坏了。

4

2 回答 2

0

我同意derHugo。如果使用 LoadSceneMode.Single,则无需手动卸载场景。

另请参阅与 OnDestroy 相关的文档:

“销毁附加的行为将导致游戏或场景接收 OnDestroy。

OnDestroy 在场景或游戏结束时发生。如果场景关闭并加载了新场景,则将进行 OnDestroy 调用。

当作为独立应用程序构建时,在场景结束时进行 OnDestroy 调用。场景结束通常意味着加载了新场景。”

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDestroy.html

在解决您的问题方面,请使用 LoadSceneMode.Single。如果您想保持前一个场景处于活动状态,请使用 LoadSceneMode.Additive。

于 2021-03-28T12:59:14.353 回答
-1

场景必须手动卸载,否则它们将保持活动状态。查看SceneManager 文档

在您的情况下,使用卸载旧场景
SceneManager.UnloadSceneAsync(sceneName);
应该可以。

您也可以尝试使用该mode参数进行试验。但作为Single默认值,它正确地不是你想要的:
SceneManager.LoadScene(sceneName, LoadSceneMode.Single);

于 2020-02-07T17:01:39.867 回答