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

Unity中OnCollisionEnter未生效,提示本地函数未使用问题求助

搞定Unity碰撞销毁的问题~

为啥会报错?

你看到的“本地函数‘OnCollisionEnter’已声明但从未使用”,核心问题是你把Unity的碰撞回调函数OnCollisionEnter嵌套在了Update函数内部!Unity的生命周期函数(像Update、OnCollisionEnter这类)必须作为脚本类的直接成员存在,不能塞到其他函数里——不然Unity根本识别不到这个回调,自然会提示它“没被使用”。

另外还有个逻辑小错误:你判断标签时用了赋值运算符=,这会直接把"Player"赋值给碰撞对象的标签,完全偏离了判断的目的,得用相等比较运算符==才行。

修复好的代码示例

// 记得把这个脚本挂载在障碍物对象上哦
void Update()
{
    // 如果Update里没有需要执行的逻辑,直接删掉这个函数也没问题
}

void OnCollisionEnter(Collision col)
{
    // 用==正确比较标签
    if (col.gameObject.tag == "Player")
    {
        Destroy(col.gameObject);
    }
}

几个额外小提醒

  • 脚本一定要挂在障碍物上,不是玩家对象!这样玩家碰撞过来时,障碍物的碰撞回调才会被触发。
  • 确认玩家对象的标签确实设置为Player,别出现拼写错误~
  • 如果Update函数里没有业务逻辑,直接删掉它,代码会更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:12:58