ham*_*123 1 c# unity-game-engine
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在一个框架中使用 GetKeyDown它只会出现一次,直到松开并再次按下为止。GetKey按住时将返回 true。这将使它被多次触发,使您的if语句为真并在一帧中执行多次。
if (Input.GetKey (KeyCode.P))应替换为 if (Input.GetKeyDown(KeyCode.P))