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