閱讀按鍵和 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!");
    }
}