游戏原型系列 vol.9 为用户输入配置XBox控制器
1.简介
如果您使用的是Unity 2019.2或更低版本,建议升级到Unity 2019.3版本。
通过Unity的新输入系统(可作为可安装的软件包提供)可以轻松实现在Xbox中为用户输入配置Xbox控制器。在本教程中,我们将设置一个使用Xbox游戏控制器按钮的简单方案。
2.安装输入系统软件包
1. 从Unity Editor的顶部菜单下拉菜单中,选择Window > Package Manager 。
2. 在项目设置窗口中,从高级下拉菜单中,选择Show Preview Packages(显示预览包)。
3. 在All Packages 列中,选择Input System(输入系统) ,然后选择Install (安装)(图01 )。

4. 出现警告对话框,确认项目需要启用本机平台后端。选择是,然后重新启动Unity编辑器。
5. 重新启动后,可以通过打开“ Project Settings(项目设置)” 来验证项目新安装的Input System(输入系统)。从顶部下拉菜单中选择Edit(编辑)> Project Settings(项目设置)。
在左列中,选择Player 。在“ 项目设置” 窗口的主窗口中,选择“ Other Settings(其他设置)” (图02 )。展开其他设置,然后向下滚动到Active Input Handling(活动输入处理)。选择Both 和或Input System Package(New)(图03 )。


3.创建您的自定义输入
1. 通过在“项目”窗口中右键单击来创建一个新的Input Action ,然后选择Create > Input Actions 。将新的 Input Actions(输入操作)重命名为“ InputMaster ”。
2. 在项目窗口中双击新创建的“ InputMaster ”,以打开“ Input Actions(输入操作)” 窗口。
3. 在Input Actions 窗口的左上角,选择No Control Schemes(无控制方案)下拉菜单,然后选择Add Control Scheme (图04 )。

4. 在“ 添加控制方案” 窗口中,选择+ 按钮创建一个新的Control Scheme(控制方案),然后将“ Scheme Name(方案名称)” 重命名为“ Xbox Control Scheme(Xbox控制方案) ”(图05 )。以后,您总是可以创建其他控制方案来添加其他输入源,例如从键盘输入。

5. 在菜单中,选择Gamepad(游戏手柄)> Xbox Controller(Xbox控制器)>Xbox Controller(Xbox控制器)(图06 )。

6. 接下来,在“ Add Control Scheme(添加控制方案)” 窗口中,选择“ Save(保存)” (图07 )。

7. 接下来,在Input Actions 窗口的左侧Action Maps 面板上,选择+ 按钮以创建New Action Map 。Action Maps(动作映射)是用于组织输入内容的类别,例如,对于Player,菜单项,摄像机视图或载具,您可能具有单独的动作映射类别。在这里,将您的Action Map重命名为“ Player ”。
8. 一个新的行动已经被添加到中间Action(动作)面板。 Action(动作)本质上是事件,例如玩家奔跑或跳跃。双击“ 新动作” ,并将其重命名为“ Jump ”。然后,我们将绑定游戏手柄控制器上的特定按钮以触发每个动作。选择“ Jump ” 动作右侧的+ 按钮,然后选择“ Add Binding(添加绑定)” (图08 )。

9. 接下来,在“ InputMaster ”窗口的“ Properties(属性)” 面板中,选择“ Binding Path(绑定路径)” 字段(图09 )。

10. 您将看到Gamepad 按钮和控件的列表。一直向下滚动以选择Xbox Controller(Xbox控制器)按钮的特定列表(图10 )。

11. 从可用选项列表中选择Xbox控制器的特定按钮。或者,选择“ Listen(监听)” 按钮,然后按下控制器本身上的相应按钮(图11 )。

12. 我们可以进一步为玩家的移动分配控制器动作,这与前面通过按钮触发跳跃的步骤大致相同。为了提高效率,您还可以设置一个动作来包含沿2个向量的运动。在这里,我们将创建一个新的Action ,将其重命名为“ Movement ”,然后选择Button 来更改Action Type (图12 )。

13. 选择Pass Through 作为Action Type ,然后选择Vector 2 作为其Control Type (图13 )。

14. 现在,当您选择“Movement(移动动作)” 旁边的+ 按钮时,您可以选择添加2D Vector Composite(2D矢量合成)(图14 )。

15. 以与前面的步骤相同的方式将运动矢量分配给相应的Xbox Controller输入(图15 )。

16. 通过输入系统提供的各种功能,创建项目所需的任何其他Input Action(输入动作)。完成后,选择Save Asset(保存资产)。有关输入系统的完整文档,请参考 UnityAPI。
17. 现在,我们将为Player设置Player Input Component(玩家输入组件)。在“层次结构”窗口中选择“玩家GameObject”后,在“检查器”窗口中选择“ Add Component(添加组件)”,然后搜索“ Player Input(玩家输入)” (图16 )。

18. 接下来,选择“对象选择器”按钮,将我们名为“ InputMaster ” 的输入动作资产分配给玩家输入组件(图17 )。

19. 接着,分配Default Scheme(默认方案)到的Xbox Control Scheme(Xbox控制方案),并且分配Default(默认映射)到Player(图18 )。

20. 最后,输入系统将为您的输入操作生成C#脚本,以进一步修改项目的需求。从Project窗口中选择“ InputMaster ” ,在Inspector窗口中选择Generate C#Class 复选框,然后选择Apply (图19 )。

21. 结果代码保存为C#脚本,保存的名称为“ InputMaster.cs ”(图20 )。

22. 进入Play Mode(播放模式)并测试您项目的Xbox Game Controller输入。您的个人项目将根据所需的感觉来确定哪种Input Action(输入操作)更合适。
4.结论
Xbox游戏控制器易于在Unity的输入系统包中进行配置和使用。该输入系统实现了多种输入控制选项绑定到特定的Xbox游戏控制器上的按钮。