为什么OnTriggerEnter在Unity3D中不起作用?

xyhw6mcr  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(244)

我对Unity还很陌生,对于所有擅长C#的人来说,这可能是一个愚蠢的问题,但我不知道为什么OnTriggerEnter在这个程序中不起作用。我已经按照教程中的说明键入了它,但它在游戏中没有作用。帮助?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DetectCollisions : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        void OnTriggerEnter(Collider other)
        {
            Destroy(gameObject);
            Destroy(other.gameObject);
        }
    }
}

我还没试过,我不知道该试什么。

41ik7eoe

41ik7eoe1#

好吧,因为你似乎很难理解这里发生了什么。

void Update()
{
    // I am a local function within the Update method!
    void OnTriggerEnter(Collider other)
    {
        Destroy(gameObject);
        Destroy(other.gameObject);
    }
}

您将OnTriggerEnter作为local function嵌套在Update方法下。这样Unity在试图通过其消息传递系统调用它时就不会“知道”/找到它。
您更希望将其作为类级别的普通方法

void Update()
{

}

void OnTriggerEnter(Collider other)
{
    Destroy(gameObject);
    Destroy(other.gameObject);
}

并且现在由于UpdateStart是空的,所以实际上最好将它们沿着移除;)

相关问题