输入操作 - MRTK2

“输入操作”是针对原始输入的抽象,旨在帮助将应用程序逻辑与产生输入的特定输入源隔离开来。 例如,可以定义“选择”操作并将其映射到鼠标左键、游戏手柄中的按钮和 6 DOF 控制器中的触发器,这非常有用。 然后,可以让应用程序逻辑侦听“选择”输入操作事件,而无需知道可以生成的所有不同输入。

创建输入操作

输入操作是在“输入操作配置文件”(混合现实工具包组件内的“输入系统配置文件”中)中配置的,指定了操作名称和它可以映射到输入类型(轴约束):

Input Action

以下是最常使用的轴约束值:

轴约束 说明
Digital 打开/关闭输入,如游戏手柄或鼠标中的二进制按钮。
单轴 单轴模拟输入,如游戏手柄中的模拟触发器。
双轴 双轴模拟输入,如控制杆。
六自由度 平移和旋转 3D 姿势,如 6 DOF 控制器生成的 3D 姿势。

可以在 AxisType 中找到完整的列表。

将输入映射到操作

将输入映射到操作的方式取决于输入源的类型:

控制器输入

转到“输入系统配置文件”下的“控制器输入映射配置文件”。 可在这里找到所有受支持的控制器的列表:

Input maping profile

选择要配置的输入,将显示一个对话框窗口,其中显示所有控制器输入,你可以为每个输入设置一个操作:

Input Action Assignment

语音输入

在“输入系统配置文件”下的“语音命令配置文件”中,你会看到当前定义的语音命令列表。 若要将其中一项映射到操作,只需在“操作”下拉列表中选中它即可。

Speech Commands profile

手势输入

“输入系统配置文件”下的“手势配置文件”包含所有定义的手势。 可以通过在“操作”下拉列表中选择每个手势,将它们映射到各自的操作。

Gesture profile

处理输入操作

警告

目前只能使用本节中所述的方法来处理“数字”类型的输入操作。 对于其他操作类型,必须改为直接处理相应输入的事件。 例如,若要处理映射到控制器输入的 6 DOF 操作,主要将 IMixedRealityGestureHandler<T> 与 T = MixedRealityPose 一起使用。

处理输入操作的最简单方法是使用 InputActionHandler 脚本。 这样你就可以定义想要侦听的操作,以及使用 Unity 事件对操作已开始和已结束事件做出反应。

Acton Handler

如果需要更多控制,可以直接在脚本中实现 IMixedRealityInputActionHandler 接口。 若要详细了解如何通过处理程序接口处理事件,请参阅输入事件部分。

示例

有关演示如何创建操作、将其映射到控制器、语音和手势输入,并使用它根据命令来旋转对象的示例场景,请参阅 MRTK/Examples/Demos/Input/Scenes/InputActions

Input action example