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

Unity中OnTriggerEnter2D不生效 无法实现碰撞切换场景问题求助

问题原因

你代码中的Unity回调方法名大小写错误,Unity的生命周期、碰撞回调方法对大小写严格敏感,你写的onTriggerEnter2D是小写开头,Unity只会识别首字母大写的OnTriggerEnter2D方法,因此触发条件满足时也不会执行你写的逻辑,自然没有Debug输出。

修复方案

  1. 修改代码里的触发器方法名,将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);
        }
    }
}
  1. 若修改后仍不触发,补充检查以下配置:
  • 触发物的Collider2D组件已勾选Is Trigger选项
  • 玩家对象的Tag确实设置为Player,大小写完全匹配
  • 两个对象的碰撞层没有被层碰撞矩阵屏蔽,不会互相忽略碰撞

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:06:03