我的统一 android 应用程序的 ScenManager 有问题。当我开始一个新场景时,旧场景处于激活状态并且可以工作,但新场景显示为工作。我希望只有新场景才能工作。
// here I load the new Scene
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
我尝试了很多,但每次我发现旧场景都被原子破坏了。
我的统一 android 应用程序的 ScenManager 有问题。当我开始一个新场景时,旧场景处于激活状态并且可以工作,但新场景显示为工作。我希望只有新场景才能工作。
// here I load the new Scene
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
我尝试了很多,但每次我发现旧场景都被原子破坏了。
我同意derHugo。如果使用 LoadSceneMode.Single,则无需手动卸载场景。
另请参阅与 OnDestroy 相关的文档:
“销毁附加的行为将导致游戏或场景接收 OnDestroy。
OnDestroy 在场景或游戏结束时发生。如果场景关闭并加载了新场景,则将进行 OnDestroy 调用。
当作为独立应用程序构建时,在场景结束时进行 OnDestroy 调用。场景结束通常意味着加载了新场景。”
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDestroy.html
在解决您的问题方面,请使用 LoadSceneMode.Single。如果您想保持前一个场景处于活动状态,请使用 LoadSceneMode.Additive。
场景必须手动卸载,否则它们将保持活动状态。查看SceneManager 文档。
在您的情况下,使用卸载旧场景
SceneManager.UnloadSceneAsync(sceneName);
应该可以。
您也可以尝试使用该mode
参数进行试验。但作为Single
默认值,它正确地不是你想要的:
SceneManager.LoadScene(sceneName, LoadSceneMode.Single);