您可以在脚本中使用 InputAction
类来定义动作,这为您的实际动作代码或方法与绑定到特定设备控件之间添加了一层抽象。
这意味着,与直接读取设备状态不同,您不需要在代码中明确指定哪些控件(例如游戏手柄的扳机或摇杆)执行哪些操作。相反,您可以创建动作(Actions),将它们绑定到控件,然后在代码中响应这些动作的状态或值。
当您在 MonoBehaviour
脚本中创建一个公共的 InputAction
字段时,它会在检查器中显示为一个可配置的字段。这个可配置字段的用户界面允许您为动作创建绑定。例如,以下代码在脚本中使用 InputAction
类定义了两个动作:
在下图中,您可以看到这些动作显示在检查器中。在这个例子中,它们已被配置为绑定到游戏手柄控件。
InputAction
类提供了一种将设备控件的交互绑定到检查器中的命名动作的方法。当您在检查器中将动作绑定到设备的控件时,您可以设计脚本以在动作执行时做出响应,而不需要在脚本中硬编码特定设备的引用。这一抽象层为您提供了灵活性,使您能够在不更改代码的情况下修改或添加多个绑定。
要从动作中读取值,您必须首先启用该动作,然后在游戏循环中反复轮询该动作,或为该动作添加事件处理程序。当您不再希望输入触发事件处理程序时,您还需要禁用该动作。
因此,使用上面代码示例中的动作,您可以使用如下脚本:
有关这些技术的更多信息,请参阅 Actions。
您可以在输入系统包中包含的示例项目中找到这种工作流程的示例。要找到它,请在项目窗口中查看 Assets > Samples > SimpleDemo
并打开场景:SimpleDemo_UsingActions
。
使用 InputActions
还可以更轻松地实现一个系统,允许用户在运行时重新映射自己的控件。
像这样使用嵌入动作比直接读取设备状态更灵活,但不如使用动作资产那样灵活。