Input System
翻譯, 這是原文1
原文2
並沒有經過官方同意(沒有問),不同意還不讓發了???
安裝
可以同時啓用舊的InputManage和新的InputSystem, 也可以只用一個. 在 Edit > Project Settings > Player 中設置(每個平臺都不同, 在下面中間的位置)
直接獲取設備的輸入
最簡單的, 就是直接讀取輸入設備的當前狀態(按了哪個鍵之類的)。例如,以下代碼獲取玩家最後使用的手柄,並讀取其當前狀態
using UnityEngine;
using UnityEngine.InputSystem;
public class MyPlayerScript : MonoBehaviour
{
void FixedUpdate()
{
var gamepad = Gamepad.current;
if (gamepad == null)
return; // No gamepad connected.
if (gamepad.rightTrigger.wasPressedThisFrame)
{
// 'Use' code here
}
Vector2 move = gamepad.leftStick.ReadValue();
// 'Move' code here
}
}
同樣的方法也適用於其他設備類型,如Keyboard.current
,Mouse.current
從輸入動作(Input Action)獲取輸入
分爲3步:
- 添加
PlayerInput
組件 - 創建動作
- 編寫腳本,設置動作響應
添加PlayerInput
組件
直接從輸入設備獲取輸入既快捷又方便,但是每種類型的設備都需要不同的代碼。這也使得以後若想改變一種觸發方式(原來用鼠標,現在用手柄),來觸發遊戲中特定的事件,變得更加困難。
您可以使用動作作爲設備和它們所觸發的遊戲內響應之間的媒介。最簡單的方法是使用PlayerInput組件。
創建輸入動作
每個PlayerInput組件表示遊戲中的一個玩家。爲了接收輸入,該組件必須連接到一組InputAction。創建一組新動作的最快方法是單擊組件上的Create Actions按鈕。這將創建一個自動配置好的資產:默認InputAction映射、InputAction、輸入綁定。
這將在您的項目中創建一個新的 .inputaction 資產,將其連接到PlayerInput組件,並打開.inputactions文件的編輯器窗口。
您可以編輯默認設置以適應項目的需要。有關如何使用此窗口的說明,請參閱動作編輯器。
編寫腳本,設置動作響應
一旦組件有了一些Action,您必須爲每個Action設置一個響應。
有關選項的詳細信息,請參見這裏。上面的截圖使用了Invoke Unity事件,它使用UnityEvent的方式(和Unity UI一樣)。Unity爲鏈接到組件的每個動作顯示一個事件。您可以爲每個事件綁定方法。
每個方法都帶有一個InputAction.CallbackContext參數,該參數可訪問觸發了Action的Control和Action的值。 有關更多信息,請參見有關Action回調的文檔。