GameObject被哪个脚本破坏

时间:2019-12-29 07:08:24

标签: c# unity3d gameobject

我试图找出我的游戏对象被游戏中的哪个脚本破坏了。 到目前为止,我尝试打印堆栈,但是那里没有提到销毁游戏对象的脚本的详细信息 码: Debug.Log(UnityEngine.StackTraceUtility.ExtractStackTrace())

1 个答案:

答案 0 :(得分:1)

Destroy实际上并不“销毁”它立即传递的对象,而是将对象添加到对象列表中,以便Unity在帧的 end 处销毁。 这是调用OnDestroy的时间,这就是为什么在调用Destroy时看不到堆栈的原因(如果您实际上会看到一个堆栈,我很确定本机代码会调用它。)

那应该是结局了...对吧?

嗯,不完全是。如果您选中Order of Execution for Event Functions,则在OnDestroyOnDisable之前会调用一个事件函数。

对我们来说幸运的是,不仅这个函数被更早地调用了,而且(至少当我最后一次在Unity 2018.4中以编辑器的播放模式对其进行测试时)OnDisable实际上是由Destroy调用的,因此如果您将堆栈放在那里,则应该能够确定谁破坏了您的单行为。