You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity销毁函数异常:碰撞后道具GameObject未被销毁

Unity中Destroy函数失效问题解决

核心问题

你的Move脚本里的flash变量既未声明,也没有从碰撞事件中获取对应的道具对象,调用Destroy(flash)本质是尝试销毁一个空引用,因此道具不会被销毁。

修正代码

直接通过碰撞参数collision获取到道具对象并销毁即可,修改OnCollisionEnter2D方法如下:

private void OnCollisionEnter2D(Collision2D collision)
{    
    if (collision.gameObject.CompareTag("item"))
    {
        Speed = 40f;
        // 销毁当前碰撞到的道具对象
        Destroy(collision.gameObject);
        Invoke("timeout", 5);
    }
}

额外验证项

  • 确认道具对象的Collider2D组件处于启用状态,且玩家或道具对象至少有一个带有Rigidbody2D组件(否则OnCollisionEnter2D事件不会触发)。
  • 道具对象的Tag确实设置为item,与代码中的判断条件一致。

内容的提问来源于stack exchange,提问作者Kilian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:44:50