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

Posted

技术标签:

【中文标题】Unity OnTriggerEnter2d() 不工作 |尝试在场景之间切换【英文标题】:Unity OnTriggerEnter2d() Not working | Trying to switch between Scenes 【发布时间】: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 快捷方式。大大加快了工作流程.. 一定会的,再次感谢您的快速响应。 【参考方案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 分支,用于加载场景;所以这不是一个真正的问题。

以上是关于Unity OnTriggerEnter2d() 不工作 |尝试在场景之间切换的主要内容,如果未能解决你的问题,请参考以下文章

unity ontriggerenter2d 有时不工作

unity OnTriggerEnter2D 不能重复使用

Unity OnTriggerEnter2D CompareTag ||比较标签不一致

碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)

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

Unity OnTriggerEnter2D 有时不起作用