重新绑定输入
使用 Rebind Input,让玩家在游戏过程中更改控制方式。你也可以读取当前选择,或恢复你创作时设置的控制方式。
游戏中的连接会保持不变。例如,玩家可以更改 Jump 的控制器按钮,而现有的 Jump 行为仍会保留其移动设置。
前往 Interaction > Controls 查找此行为。
属性
这些设置会监听 Player 1 的 Jump 绑定,并等待替换输入。
| 属性 | 默认值 | 功能 |
|---|---|---|
| Player | 1 | 要更改或读取其绑定的玩家。请与目标的玩家编号一致。 |
| Input Behavior | 未选择 | 选择 Map Control Inputs、Controller Event,或用于指定某个输入的 Keyboard Event 或 Mouse Event。Cancel 和 Reset All 无需目标。 |
| Binding | 第一行映射,或事件的单个输入 | 按易读名称选择映射行。具体事件只有一个绑定。不同的行会将控制器、键盘和鼠标的替代输入分开保留。 |
| Operation | Listen | 选择捕获、取消、读取还是重置绑定。 |
可以重新绑定特定的 Keyboard Event 按键。Any 按键和 On Sequence 不会指定单个绑定。Mouse Event 可以指定点击、移动或某个滚动方向。Any 滚动不会指定要重新绑定的具体方向。
Map Control Inputs 使用正数玩家编号。若要重新绑定使用 Player 0 创建的 Controller Event,也要在此处使用 Player 0。此全控制器事件不会显示在生成的按玩家划分的 Controls 表格中。
操作与事件触发时机
| 操作 | 效果 | 底部事件连接何时运行 |
|---|---|---|
| Listen | 等待兼容的输入,并将其保存到所选绑定。 | 捕获成功、操作被取消,或因目标不可用而无法开始时运行。每次提示更新时不会运行。 |
| Cancel | 停止当前的监听操作。已保存的绑定保持不变。无需目标。 | 立即运行。监听行为也会以取消状态结束。 |
| Reset | 移除所选绑定已保存的覆盖设置,并恢复其创作时设置的控制方式。 | 重置尝试后立即运行。 |
| Reset All | 移除此项目中该玩家所有已保存的绑定覆盖设置。无需目标。 | 立即运行。无需目标的 Reset All 会报告成功。 |
| Get Binding | 读取所选绑定当前已保存或创作时设置的控制方式。 | 读取后立即运行。 |
再次启动 Listen 会替换当前的监听操作。请确保 UI 中一次只启用一个重新绑定请求。
哪些控制方式可以互相替换?
捕获仅限于所选绑定所属的输入系列和类型。
| 所选绑定 | 兼容的捕获输入 |
|---|---|
| 控制器按钮或扳机 | 其他控制器按钮或扳机。 |
| 控制器移动 | 摇杆或 D-pad。 |
| 键盘按钮 | 一个键盘按键。 |
| 键盘移动 | 四个不同的键盘按键,依次对应 Up、Right、Down、Left。 |
| 鼠标按钮或滚动方向 | 鼠标按钮或滚动方向。 |
| 鼠标移动 | 相对鼠标移动。 |
对于键盘移动,请根据 prompt 的提示逐个收集按键。如果按下的按键已分配给另一个方向,监听会停留在当前步骤。只有完整的按键组被接受后,四个按键才会保存。
不兼容的输入不会结束监听。若要为同一操作提供键盘和控制器支持,请在 Map Control Inputs 中创建不同的行。重新绑定会更改现有行,不会为游戏添加另一种设备选项。
输出
| 输出 | 内容 |
|---|---|
control | 已保存或已查询的控制标识符,例如 buttonA、keyboard:44 或 mouse:1。Listen 成功、Get Binding 或 Reset 时会读取该值。Reset All 成功时可能没有可返回的单个控制方式。 |
label | control 的易读标签。控制器正面按钮会显示其位置。键盘移动绑定会显示实际选定的四个按键。 |
prompt | 当前的捕获提示。监听过程中提示会变化,例如提示输入下一个移动按键。 |
progress | 已完成的捕获步骤数。初始值为 0;键盘移动会依次变为 1、2 和 3,完成时为 4。其他成功的捕获完成时为 1。取消 Listen 时返回 0。 |
success | 成功捕获、读取或重置绑定时为 true。Reset All 无需目标即可返回 true。false 表示捕获已取消,或请求的绑定不可用。 |
cancelled | 监听被取消时为 true。目标不可用时,success 和 cancelled 均为 false。 |
deviceID | 提供成功捕获输入的设备。控制器会返回其会话 ID;键盘和鼠标分别返回 keyboard 和 mouse。 |
如果希望 UI 显示下一步操作,请在监听过程中读取 prompt 和 progress。提示更新不会运行底部事件连接。你可以通过单独的 UI 更新行为读取这些输出。
捕获输出描述的是一次捕获尝试。Get Binding、Reset 和 Reset All 不会启动新的捕获。单独的 Cancel 操作会报告 success 和 cancelled;不要将其其他输出用作新的捕获结果。操作完成后,使用 Get Binding 显示当前控制方式。
取消捕获
玩家可以按 Escape 或控制器的 Menu 按钮取消。监听期间,这些控制会专用于取消。右侧正面按钮仍可用于绑定。自定义 UI 也应提供 Cancel 操作。
如果开始监听时某个控制仍处于按住状态,请先松开,再次按下。捕获到的输入在恢复到中立状态前不会传递给游戏。
生成的 Controls 覆盖层在控制器捕获过程中提供 15 秒的备用超时机制,以应对 Menu 按钮不可用或未确认的情况。Universal 也会对其控制器捕获服务应用此机制。自定义的原生 Rebind Input 流程应提供 Cancel,而不要依赖超时。键盘和鼠标捕获不使用此控制器超时机制。
在生成的覆盖层中,选择设备标签,然后点击某个操作旁的 Change。聚焦的提示会显示当前绑定、要按下的下一个输入,以及 Cancel。覆盖层也会处理用于启动捕获的鼠标点击,以及点击 Cancel 按钮的操作。重新绑定鼠标时,建议使用此 UI。本文的自定义连接示例选择了控制器绑定。
连接指南:更改 Jump 并更新其标签
这是一个示例。首先,在 Map Control Inputs 中创建一行控制器输入,为其指定易读名称 Jump,并将其连接到游戏的跳跃输入。
- 创建一个 Change 按钮 Object 和一个 Jump Binding 标签 Object。
- 为 Change 按钮添加 Started Touching。将其底部事件连接到 Rebind Input。
- 将此 Rebind Input 设置为 Listen、Player 1、你的 Map Control Inputs 行为,以及 Jump 控制器行。
- 将 Listen 连接到第二个 Rebind Input。将此 Rebind Input 设置为 Get Binding,并使用相同的 Player、Input Behavior 和 Binding。
- 将 Get Binding 连接到 Set Label。选择 Jump Binding 作为 Object A。
- 将 Get Binding 实例的绿色
label输出拖到 Set Label 的 Text 属性中。 - 创建一个 Cancel 按钮 Object。将其 Started Touching 行为连接到另一个设置为 Cancel 的 Rebind Input。此 Cancel 行为无需目标。
使用设置为 Get Binding 的实例所提供的 label 输出。Listen 结束后,它会读取已保存的选择。
无论捕获成功还是被取消,Listen 都会结束。随后 Get Binding 会读取当前选择,因此如果玩家取消,标签会显示之前的控制方式。你也可以在 UI 首次打开时执行 Get Binding,以显示初始选择。
已保存的选择
覆盖设置按当前项目、玩家、行为和绑定保存。更改某个控制器行不会影响键盘和鼠标替代输入。Reset All 会影响该玩家在整个项目中已保存的绑定,包括其他场景中的创作控制设置。它不会重置其他玩家的选择,也不会更改控制器分配。
在场景加载之前,可以重新绑定项目中定义的控制。如果游戏通过另一个行为的输出决定控制所对应的玩家或输入来源,则要等该实时行为解析出这些值后,控制才可用。
已保存的选择由玩家运行时保存。它们不会标识某个特定的控制器硬件,也不保证能在不同设备或玩家应用之间转移。使用 Assign Controller 为玩家选择已连接的设备。请通过平台自身的设置连接或配对实体设备。

