started
和 canceled
事件没有触发,可能是因为在 Action Maps
里面的 Actions
没有正确设置 Interactions
。 Interactions
可以用来定义输入行为,例如按下、长按、松开等。 如果 Actions
没有配置 Interactions
,那么 started
和 canceled
事件可能不会按预期触发。
如何设置 Interactions
在 Unity 的新输入系统中,可以通过以下步骤来配置 Interactions
:
打开 Input Actions 资产:在项目窗口中双击你的
Input Actions
资产(例如PlayerInputActions
)。选择 Action Maps:在左侧的
Action Maps
列表中,选择你要配置的Action Map
(例如Player
)。选择 Action:在中间的
Actions
列表中,选择你要配置的Action
(例如Interaction
)。添加 Interactions:
在右侧的
Properties
面板中,点击Interactions
下的+
按钮。从下拉菜单中选择适合的
Interaction
类型。例如,选择Press
以处理按下和松开的行为。
示例:设置 Press Interaction
在
Interactions
下拉菜单中选择Press
。配置
Press
的参数:Behavior:选择
Press Only
、Release Only
或Press and Release
。Press Point:设置触发按下事件的压力点(对于压力感应设备)。
这样, started
和 canceled
事件会按预期触发。
设置 Interactions 的具体步骤
双击 Input Actions 资产:打开你的
PlayerInputActions
。选择 Action Map:选择
Player
。选择 Action:选择
Interaction
。添加 Press Interaction:
在右侧
Properties
面板中,点击Interactions
下的+
按钮。选择
Press
。
Interaction
的作用
Interaction
用于定义输入的具体行为,例如按下、长按、松开等。 Interaction
的配置决定了什么时候触发 started
、performed
和 canceled
事件:
Press
Interaction:处理按键按下和松开的行为。started
:在按键刚被按下时触发。performed
:在按键被按下达到设定的阈值时触发。canceled
:在按键松开时触发。
Hold
Interaction:处理长按行为。started
:在按键刚被按下时触发。performed
:在按键按住达到设定的时间时触发。canceled
:在按键松开或未达到设定的时间时触发。
Tap
Interaction:处理快速点击行为。started
:在按键刚被按下时触发。performed
:在按键快速按下并松开时触发。canceled
:在按键按住超过设定时间或未达到设定时间时触发。
为什么 performed
能正确触发,而 started
和 canceled
不能
默认行为:
performed
事件是默认的输入行为,当输入被处理时,它会自动触发。因此,即使没有设置Interaction
,performed
事件也能正常工作。
需要特定的
Interaction
设置:started
和canceled
事件依赖于特定的Interaction
来定义何时触发。如果没有设置Interaction
,输入系统不知道何时开始和取消输入,因此这些事件不会触发。
如何设置 Interaction
通过设置 Interaction
,我们可以确保 started
和 canceled
事件按预期触发。
设置步骤
打开 Input Actions 资产:在项目窗口中双击你的
Input Actions
资产(例如PlayerInputActions
)。选择 Action Map:在左侧的
Action Maps
列表中,选择你要配置的Action Map
(例如Player
)。选择 Action:在中间的
Actions
列表中,选择你要配置的Action
(例如Interaction
)。添加 Interactions:
在右侧的
Properties
面板中,点击Interactions
下的+
按钮。从下拉菜单中选择适合的
Interaction
类型(例如Press
)。
示例:设置 Press
Interaction
选择
Press
:在
Interactions
下拉菜单中选择Press
。
配置
Press
的参数:Behavior:选择
Press and Release
,以处理按键按下和松开。Press Point:设置触发按下事件的压力点(对于压力感应设备)。