获取控制器 | hyperPad Documentation
Logo
Documentation交互获取控制器
交互

获取控制器

Published 2026年9月30日
获取控制器

使用 Get Controllers 读取已连接的控制器及其当前玩家分配。你可以使用结果创建控制器选择器,或显示可用控制器的数量。

在 Interaction > Controls 中找到此行为。

属性

Get Controllers 没有设备选择属性。每次执行时,都会读取完整的已连接控制器列表。

输入和事件连接

需要获取最新快照时运行此行为。其底部事件连接会在写入 controllers 和 count 后立即运行。

读取后,快照会保持原样。再次运行 Get Controllers 可刷新快照。连接或分配发生变化时,Controller Status 可以触发刷新。

输出

输出内容
controllers已连接的实体控制器及其玩家分配组成的数组。没有控制器连接时,数组为空。
countcontrollers 中记录的数量。没有控制器连接时,该值为 0。键盘和鼠标不会计入此数量。

Get Controllers 没有直接的 deviceID 输出。每个控制器的 ID 都位于 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 列出本次会话中产生过输入的控制项。平台识别出的布局描述了可能存在的控制项,但不能据此确认连接的设备上实际存在每个按钮。

创建选择器时,请使用此行为提供的控制器列表。不要因为缺少能力字段,就认定控制器没有任何按钮。

连接指南:显示已连接控制器的数量

这是一个用于在你自己的 UI 中显示标签的示例。

Get Controllers 连接指南:行为的精确设置、执行连接和数据拖线。

  1. 创建一个名为 Controller Count 的标签对象。
  2. 添加 Get Controllers,并在此 UI 打开时运行它。
  3. 将其底部事件连接到 Set Label。
  4. 在 Set Label 中,将 Controller Count 选为 Object A。
  5. 将 Get Controllers 的绿色 count 输出拖到 Set Label 的 Text 属性中。

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

标签会显示最新快照中的数量。绿色数据引用提供数量;白色执行连接则会在读取数量后更新标签。

若要列出设备名称,游戏需要读取 controllers 中的各个字典。此计数示例不会选择控制器,也不会提取设备 ID。生成的 Controls overlay 已提供控制器选择器。

玩家、ID 和配对

新连接的控制器会分配到第一个空闲的正数玩家槽位。使用 Assign Controller 可以更改此分配。

玩家编号是游戏中的槽位,并非永久的控制器身份。设备与玩家之间的选择仅在当前会话中有效。进行分配时,请使用此列表或控制器事件提供的最新 deviceID 值。

控制器必须已通过平台支持的设置方式连接。Get Controllers 不会为蓝牙硬件配对。可连接的控制器数量上限取决于设备和操作系统。

相关内容