游戲原型系列 vol.9 為用戶輸入配置XBox控制器
1.簡介
如果您使用的是Unity 2019.2或更低版本,建議升級到Unity 2019.3版本。
通過Unity的新輸入系統(tǒng)(可作為可安裝的軟件包提供)可以輕松實(shí)現(xiàn)在Xbox中為用戶輸入配置Xbox控制器。在本教程中,我們將設(shè)置一個使用Xbox游戲控制器按鈕的簡單方案。
2.安裝輸入系統(tǒng)軟件包
1. 從Unity Editor的頂部菜單下拉菜單中,選擇Window > Package Manager 。
2. 在項(xiàng)目設(shè)置窗口中,從高級下拉菜單中,選擇Show Preview Packages(顯示預(yù)覽包)。
3. 在All Packages 列中,選擇Input System(輸入系統(tǒng))?,然后選擇Install (安裝)(圖01 )。

4. 出現(xiàn)警告對話框,確認(rèn)項(xiàng)目需要啟用本機(jī)平臺后端。選擇是,然后重新啟動Unity編輯器。
5. 重新啟動后,可以通過打開“ Project Settings(項(xiàng)目設(shè)置)” 來驗(yàn)證項(xiàng)目新安裝的Input System(輸入系統(tǒng))。從頂部下拉菜單中選擇Edit(編輯)> Project Settings(項(xiàng)目設(shè)置)。
在左列中,選擇Player 。在“ 項(xiàng)目設(shè)置” 窗口的主窗口中,選擇“?Other Settings(其他設(shè)置)” (圖02 )。展開其他設(shè)置,然后向下滾動到Active Input Handling(活動輸入處理)。選擇Both 和或Input System Package(New)(圖03 )。


3.創(chuàng)建您的自定義輸入
1. 通過在“項(xiàng)目”窗口中右鍵單擊來創(chuàng)建一個新的Input Action ,然后選擇Create > Input Actions 。將新的?Input Actions(輸入操作)重命名為“ InputMaster ”。
2. 在項(xiàng)目窗口中雙擊新創(chuàng)建的“ InputMaster ”,以打開“ Input Actions(輸入操作)” 窗口。
3. 在Input Actions 窗口的左上角,選擇No Control Schemes(無控制方案)下拉菜單,然后選擇Add Control Scheme (圖04 )。

4. 在“ 添加控制方案” 窗口中,選擇+ 按鈕創(chuàng)建一個新的Control Scheme(控制方案),然后將“ Scheme Name(方案名稱)” 重命名為“ Xbox Control Scheme(Xbox控制方案) ”(圖05 )。以后,您總是可以創(chuàng)建其他控制方案來添加其他輸入源,例如從鍵盤輸入。

5. 在菜單中,選擇Gamepad(游戲手柄)> Xbox Controller(Xbox控制器)>Xbox Controller(Xbox控制器)(圖06 )。

6. 接下來,在“ Add Control Scheme(添加控制方案)” 窗口中,選擇“ Save(保存)” (圖07 )。

7. 接下來,在Input Actions 窗口的左側(cè)Action Maps 面板上,選擇+ 按鈕以創(chuàng)建New Action Map 。Action Maps(動作映射)是用于組織輸入內(nèi)容的類別,例如,對于Player,菜單項(xiàng),攝像機(jī)視圖或載具,您可能具有單獨(dú)的動作映射類別。在這里,將您的Action Map重命名為“ Player ”。
8. 一個新的行動已經(jīng)被添加到中間Action(動作)面板。?Action(動作)本質(zhì)上是事件,例如玩家奔跑或跳躍。雙擊“ 新動作” ,并將其重命名為“ Jump ”。然后,我們將綁定游戲手柄控制器上的特定按鈕以觸發(fā)每個動作。選擇“ Jump ” 動作右側(cè)的+ 按鈕,然后選擇“ Add Binding(添加綁定)” (圖08 )。

9. 接下來,在“ InputMaster ”窗口的“ Properties(屬性)” 面板中,選擇“ Binding Path(綁定路徑)” 字段(圖09 )。

10. 您將看到Gamepad 按鈕和控件的列表。一直向下滾動以選擇Xbox Controller(Xbox控制器)按鈕的特定列表(圖10 )。

11. 從可用選項(xiàng)列表中選擇Xbox控制器的特定按鈕?;蛘?,選擇“ Listen(監(jiān)聽)” 按鈕,然后按下控制器本身上的相應(yīng)按鈕(圖11 )。

12. 我們可以進(jìn)一步為玩家的移動分配控制器動作,這與前面通過按鈕觸發(fā)跳躍的步驟大致相同。為了提高效率,您還可以設(shè)置一個動作來包含沿2個向量的運(yùn)動。在這里,我們將創(chuàng)建一個新的Action ,將其重命名為“ Movement ”,然后選擇Button 來更改Action Type (圖12 )。

13. 選擇Pass Through 作為Action Type ,然后選擇Vector 2 作為其Control Type (圖13 )。

14. 現(xiàn)在,當(dāng)您選擇“Movement(移動動作)” 旁邊的+ 按鈕時,您可以選擇添加2D Vector Composite(2D矢量合成)(圖14 )。

15. 以與前面的步驟相同的方式將運(yùn)動矢量分配給相應(yīng)的Xbox Controller輸入(圖15 )。

16. 通過輸入系統(tǒng)提供的各種功能,創(chuàng)建項(xiàng)目所需的任何其他Input Action(輸入動作)。完成后,選擇Save Asset(保存資產(chǎn))。有關(guān)輸入系統(tǒng)的完整文檔,請參考 UnityAPI。
17. 現(xiàn)在,我們將為Player設(shè)置Player Input Component(玩家輸入組件)。在“層次結(jié)構(gòu)”窗口中選擇“玩家GameObject”后,在“檢查器”窗口中選擇“ Add Component(添加組件)”,然后搜索“ Player Input(玩家輸入)” (圖16 )。

18. 接下來,選擇“對象選擇器”按鈕,將我們名為“ InputMaster ” 的輸入動作資產(chǎn)分配給玩家輸入組件(圖17 )。

19. 接著,分配Default Scheme(默認(rèn)方案)到的Xbox Control Scheme(Xbox控制方案),并且分配Default(默認(rèn)映射)到Player(圖18 )。

20. 最后,輸入系統(tǒng)將為您的輸入操作生成C#腳本,以進(jìn)一步修改項(xiàng)目的需求。從Project窗口中選擇“ InputMaster ” ,在Inspector窗口中選擇Generate C#Class 復(fù)選框,然后選擇Apply (圖19 )。

21. 結(jié)果代碼保存為C#腳本,保存的名稱為“ InputMaster.cs ”(圖20 )。

22. 進(jìn)入Play Mode(播放模式)并測試您項(xiàng)目的Xbox Game Controller輸入。您的個人項(xiàng)目將根據(jù)所需的感覺來確定哪種Input Action(輸入操作)更合適。
4.結(jié)論
Xbox游戲控制器易于在Unity的輸入系統(tǒng)包中進(jìn)行配置和使用。該輸入系統(tǒng)實(shí)現(xiàn)了多種輸入控制選項(xiàng)綁定到特定的Xbox游戲控制器上的按鈕。