取得控制器
使用 Get Controllers 讀取已連接的控制器及目前的玩家指派。你可以使用結果建立控制器選擇器,或顯示可用的控制器數量。
請前往 Interaction > Controls 找到此行為。
屬性
Get Controllers 沒有裝置選擇屬性。每次執行時都會讀取完整的已連接控制器清單。
輸入與事件連線
需要最新快照時,請執行此行為。底部的事件連線會在寫入 controllers 和 count 後立即執行。
快照會保持讀取當下的狀態。若要更新快照,請再次執行 Get Controllers。連線或指派變更時,Controller Status 可以觸發更新。
輸出
| 輸出 | 內容 |
|---|---|
controllers | 已連接的實體控制器及其玩家指派所組成的陣列。若沒有連接任何控制器,陣列便為空。 |
count | controllers 中的記錄數量。若沒有連接任何控制器,值為 0。鍵盤和滑鼠不會計入此數量。 |
Get Controllers 沒有直接的 deviceID 輸出。每個控制器的 ID 都位於 controllers 陣列中的字典內。
控制器記錄
controllers 中的每個項目都是一個已連接實體控制器的字典。讀取欄位(例如 deviceID)之前,請先從陣列中讀取字典。
| 欄位 | 可讀取的內容 |
|---|---|
deviceID | 控制器在目前遊戲工作階段中的 ID。請將此值用於 Assign Controller。 |
name | 平台提供的名稱。兩個控制器可能有相同的名稱。 |
vendorName | 回報的控制器廠商或名稱。此值可能與 name 相同。 |
connected | 出現在此已連接控制器清單中的項目,其值為 true。 |
playerIndex | 指派給它的玩家編號。0 代表已連接但尚未指派。 |
deviceType | controller。鍵盤和滑鼠不在此清單中。 |
connectionOrder | 用於維持裝置連線順序的數字。請使用 deviceID 識別裝置,而不要依據它在陣列中的位置。 |
controls | 若有提供,則為控制項識別碼陣列,例如 buttonA、leftStick 和 buttonMenu。使用前請先確認此欄位是否存在。 |
Universal player 也可能提供 capabilitiesKnown、standardizedProfile 和 observedControls。這些欄位在不同平台上不一定都有。capabilitiesKnown 表示完整控制項清單是否已確認。standardizedProfile 表示平台是否辨識出標準遊戲手把配置。observedControls 列出本次工作階段中曾產生輸入的控制項。已辨識的配置描述的是可能存在的控制項,並不代表已確認連接的裝置具備每一個按鈕。
請使用此行為提供的控制器清單建立選擇器。不要把缺少能力欄位視為控制器沒有按鈕的證據。
連線指南:顯示已連接的控制器數量
這是示意範例,說明如何在自己的 UI 中使用標籤。
- 建立名為 Controller Count 的標籤 Object。
- 加入 Get Controllers,並在此 UI 開啟時執行。
- 將其底部的事件連線接到 Set Label。
- 在 Set Label 中,將 Controller Count 設為 Object A。
- 將 Get Controllers 的綠色
count輸出拖曳到 Set Label 的 Text 屬性。
標籤會顯示最新快照中的數量。綠色資料參照提供數字;白色執行連線則會在讀取數量後更新標籤。
若要顯示裝置名稱清單,遊戲必須讀取 controllers 中的個別字典。此數量範例不會選取控制器或擷取裝置 ID。產生的 Controls overlay 已提供控制器選擇器。
玩家、ID 與配對
新連接的控制器會指派給第一個可用的正數玩家欄位。請使用 Assign Controller 變更此指派。
玩家編號是遊戲中的欄位,不是永久的控制器識別。裝置與玩家之間的選擇只在目前工作階段有效。進行指派時,請使用此清單或控制器事件提供的最新 deviceID 值。
控制器必須先透過平台支援的設定完成連接。Get Controllers 不會配對 Bluetooth 硬體。可連接的控制器數量上限取決於裝置和作業系統。

