我在激活和取消激活对象时遇到unity3d
中的问题。我想在按一个键时启用该对象,并在再次按下时禁用它。
我认为我的代码很好。但它无法正常工作。当我第一次按下按钮时,对象被激活,然后立即停用,有时候按键工作很好。我认为这是因为Update()
功能,它在每一帧都运行。我不知道我在做什么。
代码:
public class A : MonoBehaviour
{
[SerializeField]
private GameObject invSystem;
[SerializeField]
bool buttonCheck;
void Update()
{
if (Input.GetKey(KeyCode.P))
{
if (!buttonCheck)
{
invSystem.SetActive(true);
buttonCheck = true;
}
else
{
invSystem.SetActive(false);
buttonCheck = false;
}
}
}
}
答案 0 :(得分:4)
使用GetKeyDown
只会在帧中出现一次,直到重新启动并再次按下。 GetKey
在按下时会返回true。这将使它不止一次被触发,使if
语句成为真,并在一帧中多次执行。
if (Input.GetKey (KeyCode.P))
应替换为if (Input.GetKeyDown(KeyCode.P))