Man*_*ngh 5 c# unity-game-engine gameobject
我试图找出我的游戏对象正在被我的游戏中的哪个脚本破坏。到目前为止,我尝试打印堆栈,但没有提到有关销毁游戏对象的脚本的详细信息,代码:
Debug.Log(UnityEngine.StackTraceUtility.ExtractStackTrace())
Destroy
实际上并没有立即“销毁”它传递的对象,而是将对象添加到对象列表中,以便 Unity在帧结束时销毁。这是何时OnDestroy
被调用,这就是为什么你不会看到Destroy
被调用时的堆栈(如果你真的会看到一个堆栈,我很确定本机代码会调用它)。
所以这应该是它的结束......对吧?
嗯,不完全是。如果您检查事件函数的执行顺序, 则会在OnDestroy
,之前调用一个事件函数OnDisable
。
幸运的是,这个函数不仅被调用得更早,而且(至少当我上次在编辑器的播放模式下在 Unity 2018.4 上测试这个函数时)OnDisable
实际上是由 调用的Destroy
,所以如果你在那里得到堆栈,你应该,希望能够确定谁在破坏你的单一行为。
归档时间: |
|
查看次数: |
680 次 |
最近记录: |