Unity OnTriggerEnter2d() 不工作 |试图在场景之间切换

Unity OnTriggerEnter2d() Not working | Trying to switch between Scenes

我是 unity 的新手,我一直在尝试让这个场景切换正常工作,但是当玩家点击它时,触发器似乎没有激活。 debug.Log 什么也没做,所以我很困惑。我知道我的术语可能没有意义,所以让我展示一些图片。如果您能提供帮助,那将非常有帮助。谢谢!

这是我要触发的对象的检查面板

这是玩家的检查员

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()
    {

    }

    void 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);
        }
    }

}

Unity Monobehavior Lifecycle methods 以大写开头,C# 方法区分大小写。因此需要修正以下方法才能被Unity使用:

  • start => Start
  • update => Update
  • onTriggerEnter2D => OnTriggerEnter2D

由于 C# 惯例是方法以大写字母开头,如果您假设它以大写字母而不是小写字母开头,则不太可能遇到此问题。不过最好确认一下!此外,如果您正在使用 Visual Studio,您可以通过花时间学习一些快捷方式来避免这些痛苦。

嘿,我刚刚发现您将 bool useIntegerToLoadLevel 初始化为 false 并且您正在使用此条件加载 if 语句中的场景和bool 永远不会设置为 true

尝试在进入触发器时将此bool设置为true,即在OnTriggerEnter2D方法中,应该肯定有效。这是一个任何人都可能犯的小错误。