Unity 编辑器:检查 OnDestroy() 方法是否因为场景正在关闭而被调用

Ser*_*gey 1 editor unity-game-engine

在编辑器中触发有两种情况OnDestroy()(类需要标注[ExecuteInEditMode]属性):

  1. 当场景关闭并且所有物体都被摧毁时。
  2. 当对象从场景中删除时。

是否可以区分这两种情况OnDestroy()?我尝试订阅以EditorSceneManager.sceneClosing设置标志,然后使用它,OnDestroy()但此事件不起作用。还有其他选择吗?

Moe*_*ker 7

这是一个有点老的问题,但这是谷歌的第一个结果,所以我想我可以分享我的方法。

void OnDestroy()
{
    if(gameObject.scene.isLoaded) //Was Deleted
    {

    }
    else //Was Cleaned Up on Scene Closure
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 完美运作!这应该在 OnDestroy 的文档中 (2认同)