分配控制器
使用 Assign Controller 选择在游戏中由哪个控制器控制某位玩家。玩家 1 和玩家 2 可以都使用 Left Stick 和 Bottom Button,同时分别接收来自不同控制器的输入。
在 Interaction > Controls 中找到此行为。
属性
| 属性 | 默认值 | 作用 |
|---|---|---|
| Player | 1 | 要分配的玩家槽位。使用正数,或使用 0 取消分配所选控制器。 |
| Controller ID | 空 | 要分配的已连接控制器。将 Controller Event 或 Controller Status 中的 deviceID 拖入此处,或者从 Get Controllers 的 controllers 数组中的某条记录读取该值。 |
运行此行为前,请提供已连接控制器的 ID。Get Controllers 提供的是字典数组;它不会将 deviceID 作为单独的输出提供。
输入与事件连接
每次执行此行为时,都会尝试进行分配。无论 success 为 true 还是 false,其底部事件连接都会在尝试后运行。显示确认信息前,请先读取 success。
一个控制器一次只能属于一个玩家槽位。将控制器移到另一个槽位后,它会从原槽位移除。将控制器分配到已被占用的槽位时,原先分配到该槽位的控制器会被取消分配。
将控制器分配到它当前所在的槽位会成功,但不会产生新的分配变更。只有分配发生变化时,Controller Status 才会报告变更。
输出
| 输出 | 包含的内容 |
|---|---|
success | 找到已连接的控制器并应用了所请求的分配时为 true。提供的控制器不可用时为 false。 |
deviceID | 你在本次分配尝试中提供的控制器 ID。 |
playerIndex | 你请求的玩家编号。0 表示你请求取消分配。请先检查 success,再将此值视为已确认的结果。 |
连接指南:为玩家 2 选择控制器
这是一个控制器选择界面的示例。它会选择固定的玩家槽位,而不是自动查找下一个玩家。
- 将 Controller Event 添加到玩家选择界面。
- 将 Player 设为
0,将 Control 设为 Bottom Button (A / ×),并将 Event 设为 Pressed。 - 将其底部事件连接到 Assign Controller。
- 将 Assign Controller 的 Player 设为
2。 - 将 Controller Event 的绿色
deviceID输出拖到 Assign Controller 的 Controller ID 属性中。
玩家按下底部面键时,该控制器就会分配给玩家 2。显示的符号可能因控制器品牌而异。
只有在界面正在为玩家 2 进行选择时,才使用此选择行为。每次匹配的按键都会尝试进行相同的分配。如果该槽位已有控制器,另一个控制器的按键操作会将其替换。要构建完整的多人游戏大厅,请围绕此示例添加自己的确认和选择流程。
将玩家选择与设备 ID 分开保存
新连接的控制器会从第一个空闲的正数玩家槽位开始分配。Assign Controller 可让游戏更改此自动分配结果。
分配仅在当前游戏会话中生效。deviceID 是会话标识符,因此将它保存下来供之后启动游戏时使用,并不能保留控制器的选择。
重新映射的选择会按项目、玩家和绑定分别保存。如果你为玩家 2 分配了替换控制器,玩家 2 已保存的按键选择仍会保留。此行为不会更改这些绑定。
你可以使用大于 1 和 2 的正数玩家编号。此行为不会设置玩家人数上限;可连接的实体控制器数量由平台限制。Assign Controller 使用已经连接的设备,不会执行蓝牙配对。
向已分配的玩家发送反馈
Vibrate 会使用当前分配。例如,将其 Player 设为 2,并将 Vibrate 设为 Controller,即可请求玩家 2 的控制器提供反馈。受支持且已配对的 iPhone 也会使用相同的玩家选择。
分配不同的控制器后,下一次振动会发送到该控制器。重新分配会停止之前控制器上正在进行的振动。

