使用 Input.GetKey 多次按键返回 true

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)

Pro*_*mer 5

在一个框架中使用 GetKeyDown它只会出现一次,直到松开并再次按下为止。GetKey按住时将返回 true。这将使它被多次触发,使您的if语句为真并在一帧中执行多次。

if (Input.GetKey (KeyCode.P))应替换为 if (Input.GetKeyDown(KeyCode.P))