Unity的DestroyImmediately使用不当引发的bug

文章讲述了在Unity项目中遇到的‘MissingReferenceException’报错,主要原因是尝试访问已被销毁的Transform对象。提供了解决方案,如检查对象销毁前后,避免在协程或析构函数中不当访问,以及注意跨场景的对象引用问题。

项目中报错如下错误:

MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.

这个报错的意思是:错误通常发生在你试图访问一个已经被销毁的对象时在Unity中,Transform 对象经常被使用,例如在游戏对象或场景中的位置、旋转和缩放等操作

以下是可能的原因和解决方案:

  1. 销毁对象后仍然尝试访问其属性或方法:确保在访问 Transform 对象之前,该对象没有被销毁
  2. 协程中访问销毁的对象:如果你在协程中访问一个对象,并希望在访问后销毁它,请确保在销毁之前完成协程
  3. 在对象的析构函数或销毁方法中访问其他对象:当一个对象在析构或销毁时,可能无法保证其他对象的稳定性避免在此类情况下访问其他对象
  4. 延迟销毁或意外保留对象引用:确保你的代码中没有延迟销毁的情况,或者保留了对对象的引用,但在实际使用时却意外地销毁了它
  5. 跨场景访问:如果你在一个场景中访问一个对象,而该对象在另一个场景中被销毁,也会导致此错误确保在访问对象时,该对象所在的场景仍处于活动状态。

遍寻代码,调试时断点进了底层代码。

正当我毫无头绪的时候,看到了这行代码:DestroyImmediately(XXXX);脑海中灵光一闪,改成Destroy试试。嗯,试试就成功啊。解决了报错的问题。

看来Unity中有些游戏物体不适合马上销毁。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值