所以我花了几个小时的时间来编写这个脚本,这比我想的要长得多,因为我认为这个脚本很简单(虽然我过去有过一点编程经验)。我有一个带有触发器的场景,当我按下触发器时我希望它启用几个UI元素当你按下一个键时,它会把你送到另一个场景。它所做的是,当你按下分配给动作的键时,它会启用UI,但不会加载场景。
以下是脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class entryDining : MonoBehaviour
{
public GameObject ThePlayer;
public GameObject uiPanel;
public GameObject textBox;
public string actionText;
public string scene;
void OnTriggerEnter2D(Collider2D other)
{
textBox.GetComponent<Text>().text = actionText;
uiPanel.SetActive (true);
textBox.SetActive (true);
if (Input.GetButtonDown("Action"))
{
SceneManager.LoadScene(scene);
}
}
void OnTriggerExit2D()
{
uiPanel.SetActive(false);
}
}
我已经删除了if语句,并离开了SceneManager,可以进入触发器,它会将我发送到我设置的场景,所以我已经将范围缩小到if语句没有按照我的意图工作。然而,在我试图让这个脚本发送给我的场景中,我使用了这个:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class tempDining : MonoBehaviour
{
public void Update()
{
if(Input.GetButtonDown("Action"))
{
SceneManager.LoadScene("entryWay");
}
}
}
我真的不知道我在这里做错了什么=/请帮助!
1条答案
按热度按时间e4yzc0pl1#
根据文件
https://docs.unity3d.com/ScriptReference/Input.GetButtonDown.html
只能在
Update
内部调用Input.GetButtonDown