控制器状态 | hyperPad Documentation
Logo
Documentation交互控制器状态
交互

控制器状态

Published 2026年9月30日
控制器状态

使用 Controller Status,可在实体控制器或已配对的手机控制器连接、断开连接或更换玩家时,立即运行与其连接的行为。例如,控制器连接时隐藏触控控件,断开连接时重新显示。

在 Interaction > Controls 中找到此行为。

属性

Controller Status 属性设置为 Player 0 和 Changed。

在控制器数量示例中,这些设置会监听任意玩家的变化。

属性默认值作用
Player1监视分配给此玩家的控制器。输入其他正数可监视另一位玩家;输入 0 则监视所有控制器。更改分配时,控制器离开的玩家位置也会收到事件。
EventChanged选择哪些变化会运行与此行为连接的行为。

事件选项

  • **Changed:**连接、断开连接和分配变更时运行。
  • **Connected:**控制器连接时运行。
  • **Disconnected:**控制器断开连接时运行。
  • **Assigned:**控制器的玩家分配发生变化时运行,包括取消分配。

输入与事件连接

将 Controller Status 放在行为链的开头,并将其底部的事件连接直接连接到下一个行为。它会自动开始监听,无需使用 Timer。

每当发生符合条件的事件时,它都会立即运行连接的行为,包括游戏暂停期间。事件触发后,它会继续监听。禁用 Controller Status 会停止其监听器,直到再次启用。

监听器启动时,Connected 和 Changed 也会报告已连接的控制器。如果需要完整的初始列表(包括空列表),请使用 Get Controllers。

输出

输出包含内容
controllers当前已连接控制器记录组成的数组。控制器断开连接后,会立即从此数组中移除。
deviceID状态发生变化的控制器的会话 ID。
name该控制器报告的名称。名称可能是通用名称,也可能被多个控制器共用。
connected控制器已连接时为 true;断开连接时为 false。
playerIndex此事件中控制器分配到的玩家。分配为 0 表示未分配。断开连接时,报告的是控制器断开连接时所在的玩家位置。
previousPlayerIndex控制器在分配变更时离开的玩家位置。未提供之前的分配时,此值为 0。

controllers 输出使用与下文 Get Controllers 所述相同的记录字段。

控制器记录

controllers 中的每个项目都是一个字典,代表一个已连接的实体控制器或已配对的手机控制器。读取字段(如 deviceID)之前,请先从数组中读取一个字典。

字段可读取的内容
deviceID控制器在当前游戏会话中的 ID。将此值与 Assign Controller 配合使用。
name平台提供的名称。两个控制器可能有相同的名称。
vendorName控制器报告的供应商名称或名称。它可能与 name 相同。
connected此已连接控制器列表中的项目值为 true。
playerIndex分配给它的玩家编号。0 表示控制器已连接但尚未分配。
deviceTypecontroller。键盘和鼠标不包含在此列表中。
connectionOrder用于保持设备连接顺序的数字。请使用 deviceID 标识设备,而不要使用它在数组中的位置。
controls如有提供,则为控制项标识符数组,例如 buttonA、leftStick 和 buttonMenu。使用前请检查此字段是否存在。

Universal player 还可能提供 capabilitiesKnown、standardizedProfile 和 observedControls。这些字段并非所有平台都会提供。capabilitiesKnown 用于说明完整的控制项列表是否已确认。standardizedProfile 用于说明平台是否识别出标准游戏手柄布局。observedControls 列出本次会话中产生过输入的控制项。已识别的布局描述的是可能存在的控制项,并不代表连接的设备上一定有每个按钮。

在选择器中使用此行为的控制器列表。不要仅因缺少某项能力字段,就认定控制器没有按钮。

连接指南:更新控制器数量

这是一个示例,你可以将其添加到自己的控制器选择界面中。

Controller Status 连接指南:精确的行为设置、执行连接和数据拖放。

  1. 创建一个名为 Controller Count 的标签 Object。
  2. 添加 Controller Status。将 Player 设为 0,将 Event 设为 Changed。
  3. 将其底部的事件连接接到 Get Controllers。
  4. 将 Get Controllers 接到 Set Label。选择 Controller Count 标签作为 Object A。
  5. 将 Get Controllers 的绿色 count 输出拖到 Set Label 的 Text 属性中。

为 Set Label 的 Text 字段选择 Get Controllers 的 count 输出。

白色连接决定每个行为何时运行。绿色拖放则告诉 Set Label 要显示哪个值。连接了两个控制器时,它会显示 2。

界面首次打开时,请单独执行 Get Controllers,这样即使没有连接控制器,标签也会从 0 开始显示。Controller Status 会持续更新标签。

示例:隐藏并恢复触控摇杆

  1. 在行为链的开头添加 Controller Status。将 Player 设为 1,将 Event 设为 Connected。
  2. 将其底部的事件连接接到 Set Visibility。
  3. 在 Set Visibility 中,将 Joystick 选为 Object A,并将 Action 设为 Hide Graphic。

Controller Status 设置为 Player 1 和 Connected,在 Joystick 上运行 Set Visibility 并选择 Hide Graphic。

  1. 在另一条行为链的开头添加第二个 Controller Status。将 Player 设为 1,将 Event 设为 Disconnected。
  2. 将其连接到第二个 Set Visibility,选择同一个 Joystick,并选择 Show Graphic。

Controller Status 设置为 Player 1 和 Disconnected,在 Joystick 上运行 Set Visibility 并选择 Show Graphic。

这两条行为链适用于实体控制器,也适用于已配对并分配给 Player 1 的手机。即使是在游戏暂停菜单中完成配对,也同样有效。请使用与摇杆控制器映射相同的玩家编号。

如果允许玩家更改分配,还要监听 Assigned,并通过 Get Controllers 检查该玩家当前分配的设备,再决定是否显示摇杆。

控制器设置

玩家通过设备支持的 Bluetooth、USB 或其他控制器设置来连接控制器。Controller Status 会监视此连接,但不会打开系统配对界面,也不会连接附近的硬件设备。

玩家编号是游戏中的逻辑位置。可连接的控制器数量取决于设备和操作系统。重启或重新连接后,它们的会话 ID 可能会变化。

相关内容