阅读按键和 GetKey GetKeyDown 和 GetKeyUp 之间的区别

必须从 Update 函数读取输入。

参考所有可用的 Keycode 枚举。

1.Input.GetKey 阅读按键:

Input.GetKey 将在用户按下指定键时反复返回 true。这可用于在按住指定键的同时重复发射武器。下面是按住 Space 键时子弹自动触发的示例。播放器不必一次又一次地按下和释放按键。

public GameObject bulletPrefab;
public float shootForce = 50f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        Debug.Log("Shooting a bullet while SpaceBar is held down");

        //Instantiate bullet
        GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation) as GameObject;

        //Get the Rigidbody from the bullet then add a force to the bullet
        bullet.GetComponent<Rigidbody>().AddForce(bullet.transform.forward * shootForce);
    }
}

**2,**用 Input.GetKeyDown 阅读按键:

当按下指定键时,Input.GetKeyDown 将只返回一次。这是 Input.GetKeyInput.GetKeyDown 之间的关键区别。其用途的一个示例使用是打开/关闭 UI 或手电筒或项目。

public Light flashLight;
bool enableFlashLight = false;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        //Toggle Light 
        enableFlashLight = !enableFlashLight;
        if (enableFlashLight)
        {
            flashLight.enabled = true;
            Debug.Log("Light Enabled!");
        }
        else
        {
            flashLight.enabled = false;
            Debug.Log("Light Disabled!");
        }
    }
}

**3,**用 Input.GetKeyUp 阅读按键:

这与 Input.GetKeyDown 完全相反。它用于检测何时释放/提升按键。就像 Input.GetKeyDown 一样,它只返回 true 一次。例如,当用 Input.GetKeyDown 按下琴键时,你可以发光,然后在用 Input.GetKeyUp 释放琴键时禁用灯光。

public Light flashLight;
void Update()
{
    //Disable Light when Space Key is pressed
    if (Input.GetKeyDown(KeyCode.Space))
    {
        flashLight.enabled = true;
        Debug.Log("Light Enabled!");
    }

    //Disable Light when Space Key is released
    if (Input.GetKeyUp(KeyCode.Space))
    {
        flashLight.enabled = false;
        Debug.Log("Light Disabled!");
    }
}