关闭场景时,某些对象未被清除

时间:2016-04-12 15:11:35

标签: unity3d unity5

此错误出现在场景加载的控制台中:

  

关闭场景时,某些对象未被清除。 (你是否从OnDestroy产生了新的GameObjects?)

我知道,因为我Instantiate方法中的OnDestroy对象,我知道应用程序退出时出现how to fix这个问题。但我不知道如何通过SceneManager.LoadScene()

解决这个问题

是否有针对此需求的方法,例如OnSceneUnload

2 个答案:

答案 0 :(得分:0)

您可以使用OnLevelWasLoaded(int level)之类的:

    void OnLevelWasLoaded(int level)
    {
        if (Application.loadedLevelName == "MyNextScene") 
        {
            // Clean Up leaked objects
        }
    }

场景改变时调用。

<强>更新

上面的建议是创建在加载新场景时没有清理的脚本,所以基本上你需要在这个脚本中使用这样的东西:

void Awake() 
{
    DontDestroyOnLoad(this.gameObject);
}

然后将此未清理的对象存储在此脚本的某个集合中,并在场景更改时让它为您清理。

答案 1 :(得分:0)

我在 OnDisable 中实例化对象时遇到了类似的问题。

对我有用的是检查场景是否仍然在 OnDisable 中加载。这在退出应用程序/编辑器和卸载场景时都返回 false。

void OnDisable()
{
        if(!this.gameObject.scene.isLoaded) return;
       // Instantiate objects here
}