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
相关产品推荐
相关产品推荐

