OneBigLoser
OneBigLoser
发布于 2024-06-17 / 64 阅读
0
0

新的inputsystem started 和 canceled 事件没有触发,performed能正确触发 解决方法

startedcanceled 事件没有触发,可能是因为在 Action Maps 里面的 Actions 没有正确设置 InteractionsInteractions 可以用来定义输入行为,例如按下、长按、松开等。 如果 Actions 没有配置 Interactions,那么 startedcanceled 事件可能不会按预期触发。

如何设置 Interactions

在 Unity 的新输入系统中,可以通过以下步骤来配置 Interactions

  1. 打开 Input Actions 资产:在项目窗口中双击你的 Input Actions 资产(例如 PlayerInputActions)。

  2. 选择 Action Maps:在左侧的 Action Maps 列表中,选择你要配置的 Action Map(例如 Player)。

  3. 选择 Action:在中间的 Actions 列表中,选择你要配置的 Action(例如 Interaction)。

  4. 添加 Interactions

    • 在右侧的 Properties 面板中,点击 Interactions 下的 + 按钮。

    • 从下拉菜单中选择适合的 Interaction 类型。例如,选择 Press 以处理按下和松开的行为。

示例:设置 Press Interaction

  1. Interactions 下拉菜单中选择 Press

  2. 配置 Press 的参数:

    • Behavior:选择 Press OnlyRelease OnlyPress and Release

    • Press Point:设置触发按下事件的压力点(对于压力感应设备)。

这样, startedcanceled 事件会按预期触发。

设置 Interactions 的具体步骤

  1. 双击 Input Actions 资产:打开你的 PlayerInputActions

  2. 选择 Action Map:选择 Player

  3. 选择 Action:选择 Interaction

  4. 添加 Press Interaction

    • 在右侧 Properties 面板中,点击 Interactions 下的 + 按钮。

    • 选择 Press

Interaction 的作用

Interaction 用于定义输入的具体行为,例如按下、长按、松开等。 Interaction 的配置决定了什么时候触发 startedperformedcanceled 事件:

  • Press Interaction:处理按键按下和松开的行为。

    • started:在按键刚被按下时触发。

    • performed:在按键被按下达到设定的阈值时触发。

    • canceled:在按键松开时触发。

  • Hold Interaction:处理长按行为。

    • started:在按键刚被按下时触发。

    • performed:在按键按住达到设定的时间时触发。

    • canceled:在按键松开或未达到设定的时间时触发。

  • Tap Interaction:处理快速点击行为。

    • started:在按键刚被按下时触发。

    • performed:在按键快速按下并松开时触发。

    • canceled:在按键按住超过设定时间或未达到设定时间时触发。

为什么 performed 能正确触发,而 startedcanceled 不能

  1. 默认行为

    • performed 事件是默认的输入行为,当输入被处理时,它会自动触发。因此,即使没有设置 Interactionperformed 事件也能正常工作。

  2. 需要特定的 Interaction 设置:

    • startedcanceled 事件依赖于特定的 Interaction 来定义何时触发。如果没有设置 Interaction,输入系统不知道何时开始和取消输入,因此这些事件不会触发。

如何设置 Interaction

通过设置 Interaction,我们可以确保 startedcanceled 事件按预期触发。

设置步骤

  1. 打开 Input Actions 资产:在项目窗口中双击你的 Input Actions 资产(例如 PlayerInputActions)。

  2. 选择 Action Map:在左侧的 Action Maps 列表中,选择你要配置的 Action Map(例如 Player)。

  3. 选择 Action:在中间的 Actions 列表中,选择你要配置的 Action(例如 Interaction)。

  4. 添加 Interactions

    • 在右侧的 Properties 面板中,点击 Interactions 下的 + 按钮。

    • 从下拉菜单中选择适合的 Interaction 类型(例如 Press)。

示例:设置 Press Interaction

  1. 选择 Press

    • Interactions 下拉菜单中选择 Press

  2. 配置 Press 的参数:

    • Behavior:选择 Press and Release,以处理按键按下和松开。

    • Press Point:设置触发按下事件的压力点(对于压力感应设备)。


评论