【发布时间】:2019-12-29 07:08:24
【问题描述】:
我试图找出我的游戏对象被我游戏中的哪个脚本破坏了。
到目前为止,我尝试打印堆栈,但没有提到破坏游戏对象的脚本的详细信息
代码:
Debug.Log(UnityEngine.StackTraceUtility.ExtractStackTrace())
【问题讨论】:
-
可能无法报告谁调用了 Destroy(obj) 不仅针对 GameObject,而且对于继承自 UnityEngine.Object 的任何东西(组件、纹理等)。由于 Object.Destroy 调用内部引擎 GC 系统(其中这个 obj 只是一个参数),Unity 不愿意与提供任何类型的 api 混淆。因此,我们唯一的方法可能只是明智的猜测和实验方法。
-
建议:在您的代码库中找到
Destroy调用的所有 个实例,并将它们替换为MyTrackedDestroy,这将是您自己的Object.Destroy 调用方法。这将使您能够跟踪所有/大多数 Destroy 调用并在需要时记录它们。 -
如果你有一台电脑,转到你的脚本文件夹并执行
find "Destroy" *.cs,在 mac 或 linux 上执行grep "Destroy" *.cs,它将显示所有带有 Destroy 的脚本,或者,在 Visual Studio 中搜索它所有文件。
标签: c# unity3d gameobject