-1

我正在统一编写代码,其中玩家单击捕鼠器,它将布尔型捕鼠器设置为 true 并将其值增加到 1。它附加到一个名为 Trap 的游戏对象。当我单击另一个场景中的另一个游戏对象时,我希望它过渡到另一个场景。

项目集合(Collect.cs):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;

public class MouseCollect : MonoBehaviour
{
    public int trap = 0;
    public  bool mousetrap;  

       void Start()
    {
        mousetrap = false;   
    }

    public void OnMouseDown()
    {
            if(gameObject.tag == "Trap")
        {
            trap++;
            mousetrap = true;
            GetComponent<BoxCollider2D>().enabled = false;
        }
        
    }

   
    void Update()
    {
        
    }
}

我想在 (Mouse.cs) 中引用它的脚本

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

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

        //GameObject.Find("Trap").GetComponent<MouseCollect>().mousetrap;
        if (GameObject.Find("Trap").GetComponent<MouseCollect>().mousetrap && gameObject.tag == "MouseArea")
        {
            SceneManager.LoadScene(10);
        }
    }

    
    void Update()
    {
        
    }
}

它不起作用,它给了我 nullreferenceexception。我对 Unity 和 C# 还很陌生,因此不胜感激!

4

1 回答 1

0

试着把这部分放在里面Update()

if (GameObject.Find("Trap").GetComponent<MouseCollect>().mousetrap && gameObject.tag == "MouseArea")
{
    SceneManager.LoadScene(10);
}

为了更好的方法,不要在更新函数中使用 this ,而是尝试在里面使用 thisOnTriggerEnter2D()

OnTriggerEnter2D

于 2021-12-04T05:37:48.130 回答