此错误出现在场景加载的控制台中:
关闭场景时,某些对象未被清除。 (你是否从OnDestroy产生了新的GameObjects?)
我知道,因为我Instantiate
方法中的OnDestroy
对象,我知道应用程序退出时出现how to fix这个问题。但我不知道如何通过SceneManager.LoadScene()
是否有针对此需求的方法,例如OnSceneUnload
?
答案 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
}