關鍵字:
Unity輸入, Input替代品, Rewired, Unity接入外設, 飛行外設, 駕駛外設, Unity連接多個外設, Unity Input手柄每次連接Joy Num不同會變化
概要
Rewired是Unity下的一款插件,提供了更專業的輸入系統,相比內置輸入系統非常靈活強大,通過配置文件方便接入並識別各種外設,
添加一種設備
Rewired可以通過預先設定的特征來識別設備,識別到設備類型后,通過預先設置的按鍵映射數據實現按鍵讀取。
因此,添加一個設備的過程有如下幾步:
1. 設定識別特征
添加一個設備首先需要添加一個數據文件來保存設置信息,假設現在已經有一個空的數據文件(如何創建后面再說),如下圖
- 從Rewired插件中找到文件
Assets/Rewired/Internal/Data/Controllers/HardwareMaps/Joysticks/ThrustmasterTFlightRudderPedals.asset
,選中該文件, - 在Inspector中單擊
Launch Hardware Joystick Map Editor
按鍵打開設置窗口, - 依次單擊按鈕
Win Raw Input
, - 按鈕
Matching Criteria
,
此時窗口下方有三個區域,可以設置外設的三種特征,如圖:
- 外設的按鍵信息
分別是Axis,Button,Hat的數量,如下圖是一個外設的信息 - 外設的名字
名字匹配支持正則表達式,很靈活 - 外設的id
沒有用到,沒細究,一般前兩個夠用了,可以把這個刪掉
前兩種特征凡是設置了的,必須都匹配才能識別,id特征不清楚
檢驗設置是否成功
- 打開場景
GamepadTemplateUI
,選中物體Rewired Input Manager
, - 在Inspector中單擊
Input Manager
組件的按鈕Run in Edit Mode
, - 此時,如果有設備連接到計算機,並且特征與上面設置相符,則會看到該設備的
Is Recognized
值為true
2. 設定按鍵映射
添加按鍵定義
- 打開設置識別特征時候的窗口
Hardware Joystick Map Editor
,單擊Element Identifiers
,
該界面下有Add Entry
可以添加一條按鍵定義,添加一個按鍵需要起一個名字,並設置其作為Axis還是Button等
映射
- 定義Element之后,需要將其映射到物理按鍵上,在設置窗口中單擊
Win Raw Input
, - 再依次單擊
Axes
和Button
分別映射兩種類型。不論是Axes還是Button,映射最核心的是兩步: - 選擇一個定義好的Element
- 選擇一個系統識別的軸或按鈕號
注:
1. 創建Hardware Joystick Map數據文件
有兩種方式:
- Window->Rewired->Create->Other Assets->Hardware Joystick Map
- 從Rewired內置的數據文件中選擇一個與待接入設備類似的,復制一份,然后進行修改。這種方式借助已有數據,如果設備相似度很高,可以省去不少設置工作。這種方式需要在設置窗口
Settings
選項卡下修改Guid和Name,Guid可以借助第1種方式生成。
2. 外設信息獲取
兩種方式:
- Window系統的話,
設備與打印機
能看到設備信息 - Rewired提供了開發工具
Rewired/DevTools/JoystickElementIdetifier.scene
后來發現Windows內置的面板最多只顯示32個按鍵,如下圖:
3. 將Hardware Joystick Map添加到Controller Data Files
場景中的Input Manager
組件需要一個Data File
,這個Controller Data Files中需要添加某外設的Hardware Joystick Map,場景中才能識別到該外設。