Unity中OnTriggerEnter2D不生效 无法实现碰撞切换场景问题求助
问题原因
你代码中的Unity回调方法名大小写错误,Unity的生命周期、碰撞回调方法对大小写严格敏感,你写的onTriggerEnter2D是小写开头,Unity只会识别首字母大写的OnTriggerEnter2D方法,因此触发条件满足时也不会执行你写的逻辑,自然没有Debug输出。
修复方案
- 修改代码里的触发器方法名,将
onTriggerEnter2D改为OnTriggerEnter2D即可,修正后的完整代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class SceneChangeScript : MonoBehaviour { public int iLevelToLoad; public string sLevelToLoad; public bool useIntegerToLoadLevel = false; void Start() { // 注意Unity生命周期方法首字母必须大写,小写的start不会被引擎调用 } void Update() { // 同上,小写的update不会被引擎调用 } private void OnTriggerEnter2D(Collider2D other) { if(other.CompareTag("Player")) { Debug.Log("Somethings Being Triggered!"); LoadScene(); } } void LoadScene() { if(useIntegerToLoadLevel) { SceneManager.LoadScene(iLevelToLoad); } else { SceneManager.LoadScene(sLevelToLoad); } } }
- 若修改后仍不触发,补充检查以下配置:
- 触发物的Collider2D组件已勾选
Is Trigger选项 - 玩家对象的Tag确实设置为
Player,大小写完全匹配 - 两个对象的碰撞层没有被层碰撞矩阵屏蔽,不会互相忽略碰撞
内容的提问来源于stack exchange,提问作者LucidTruth
相关产品推荐
相关产品推荐

