关键字:
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,场景中才能识别到该外设。