加载另一个场景时不会破坏场景

时间:2020-02-07 16:42:53

标签: c# unity3d scene scene-manager

我的统一Android应用程序的ScenManager存在问题。 当我开始一个新场景时,旧场景是活动的并且可以工作,但是新场景显示为一个工作。我希望只有新场景可以工作。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

就解决您的问题而言,请使用 LoadSceneMode.Single。如果要保持上一个场景处于活动状态,请使用 LoadSceneMode.Additive。

答案 1 :(得分:-1)

必须手动卸载场景,否则它们将保持活动状态。签出SceneManager documentation

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

您也可以尝试使用mode参数。但是由于Single是默认值,因此它可能不是您想要的:
SceneManager.LoadScene(sceneName, LoadSceneMode.Single);