c# - GameObject被哪个脚本销毁
问题描述
我试图找出我的游戏对象正在被我的游戏中的哪个脚本破坏。到目前为止,我尝试打印堆栈,但没有提到破坏游戏对象的脚本的详细信息:
Debug.Log(UnityEngine.StackTraceUtility.ExtractStackTrace())
解决方案
Destroy
实际上并没有立即“销毁”它传递的对象,它会将对象添加到对象列表中,以便 Unity 在帧结束时销毁。这是 when OnDestroy
is called,这就是为什么你不会看到什么时候Destroy
调用的堆栈(如果你真的会看到一个堆栈,我很确定本机代码会调用它)。
所以这应该是它的结束......对吧?
嗯,不完全是。如果您检查事件函数的执行顺序,OnDestroy
则在, 之前调用了一个事件函数OnDisable
。
对我们来说幸运的是,这个函数不仅被更早地调用过,而且(至少当我上次在 Unity 2018.4 上以编辑器的播放模式测试它时)OnDisable
实际上是由 调用的Destroy
,所以如果你在那里得到堆栈,你应该希望能够以确定谁在破坏你的单一行为。
推荐阅读
- java - 当我使用 AES 加密或解密文件时,文件末尾有奇怪的字符,这可能是缓冲区问题还是 AES 问题?
- c++ - 将子字符串提取到最后一个分隔符 C++
- python - 如何在python中制作数据类型整数
- xml - 是否可以在kafka中发布xml?
- angular - 总是重定向到主页的路由
- reactjs - 如何将导出功能添加到 React highcharts 中的自定义按钮?
- apache-commons - Apache Commons Collections 是否有 ListValuedTreeMap?
- python - 将图形从python复制到word
- terraform - 使用 vCloud Director 提供程序在 Terraform 中创建新资源
- r - R: 看不到 Psych 包的源代码