控制器狀態 | hyperPad Documentation
Logo
Documentation互動控制器狀態
互動

控制器狀態

Published 2026年9月30日
控制器狀態

使用 Controller Status,可在實體控制器或已配對的手機控制器連線、斷線或更換玩家時,立即執行已連接的行為。你可以用它在控制器連線時隱藏觸控控制項,並在控制器斷線時再次顯示。

請前往 Interaction > Controls 找到它。

屬性

Controller Status 屬性設定為 Player 0 和 Changed。

在控制器數量範例中,這些設定會監聽任何玩家的變更。

屬性預設值功能
Player1監視指派給此玩家的控制器。輸入其他正數可監視其他玩家,輸入 0 則監視所有控制器。控制器變更指派時,也會通知該控制器離開的玩家欄位。
EventChanged選擇哪些變更會執行已連接的行為。

Event 選項

  • **Changed:**連線、斷線及指派變更時執行。
  • **Connected:**控制器連線時執行。
  • **Disconnected:**控制器斷線時執行。
  • **Assigned:**控制器的玩家指派變更時執行,包括取消指派。

輸入與事件連線

將 Controller Status 放在行為鏈的開頭,並將它底部的事件連線直接接到下一個行為。它會自動開始監聽,不需要使用計時器。

每當發生符合條件的事件,它都會立即執行已連接的行為,包括遊戲暫停時。事件發生後,它會繼續監聽。停用 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 的標籤物件。
  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 屬性。

選擇 Get Controllers 的 count 輸出,作為 Set Label 的 Text 欄位。

白色連線會決定各個行為何時執行。綠色拖曳則會告訴 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,並執行 Set Visibility,將 Joystick 設為 Hide Graphic。

  1. 在另一個行為鏈的開頭加入第二個 Controller Status。將 Player 設為 1,並將 Event 設為 Disconnected。
  2. 將它接到第二個 Set Visibility,並選取同一個 Joystick,再將設定設為 Show Graphic。

Controller Status 設定為 Player 1 和 Disconnected,並執行 Set Visibility,將 Joystick 設為 Show Graphic。

這兩個行為鏈適用於實體控制器,也適用於已配對並指派給 Player 1 的手機。從暫停中的遊戲選單進行配對時也適用。使用與搖桿控制器對應設定相同的玩家編號。

如果允許玩家變更指派,也請監聽 Assigned,並檢查 Get Controllers 中該玩家目前使用的裝置,再決定是否顯示搖桿。

控制器設定

玩家可透過裝置支援的 Bluetooth、USB 或其他控制器設定方式連接控制器。Controller Status 會監測該連線,但不會開啟系統配對功能或連接附近的硬體。

玩家編號是遊戲中的邏輯欄位。可連接的控制器數量取決於裝置和作業系統。重新啟動或重新連線後,控制器的工作階段 ID 可能會改變。

相關內容