【问题标题】:Unity OnTriggerEnter2d() Not working | Trying to switch between ScenesUnity OnTriggerEnter2d() 不工作 |尝试在场景之间切换
【发布时间】:2021-11-24 01:16:27
【问题描述】:

我对 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);
        }
    }

}

【问题讨论】:

  • 您是否尝试将 debug.log 放在条件之外以查看它是否甚至进入方法?甚至更好.. 只需在 if 语句上放一个断点并在调试模式下运行? C# 也区分大小写。 onTriggerEnter2DOnTriggerEnter2D 不同。可能统一甚至没有开始使用这种方法。我看到你对startupdate做了同样的事情
  • @OmarAbdelBari 非常感谢,我已经为这个问题困扰了大约一天。我需要确保我更加关注案例。
  • Visual Studio 有一些自动完成功能,您应该习惯于使用它。此外,以大写开头的方法是 C# 约定。我会花一些时间学习 VS 快捷方式。大大加快了工作流程..
  • 一定会的,再次感谢您的快速响应。

标签: c# unity3d game-development


【解决方案1】:

Unity Monobehavior Lifecycle methods 以大写字母开头,C# 方法区分大小写。因此,需要对以下方法进行更正以供 Unity 使用:

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

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

【讨论】:

  • 这是一个约定,是的,但在这种情况下,这无关紧要。它需要大写,因为调用这些方法的 Unity 消息系统正在寻找具有该确切名称的它们;)
  • 约定的要点是暗示“如果您使用大写字母,您可能不会经常遇到这个问题,因为这是约定”,但我会更明确地说明。
【解决方案2】:

嘿,我刚刚发现您将bool useIntegerToLoadLevel 设置为false,并且您正在使用此条件在if 语句中加载场景,并且bool 从未设置为@987654326 @。

尝试在输入触发器时将此bool 设置为true,即在OnTriggerEnter2D 方法中,肯定可以工作。这是一个任何人都可以制造的小错误。

【讨论】:

  • 是的,但他有一个 else 分支,用于加载场景;所以这不是一个真正的问题。
猜你喜欢
  • 1970-01-01
  • 2016-09-09
  • 2021-11-17
  • 2020-03-23
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
相关资源
最近更新 更多