GameInput 讀數
GameInput 讀數
從每個裝置接收的原始輸入封包都會封裝在「讀數」物件中。讀數包含原始封包資料,以及 (通常) 一或多個將原始資料轉換為較高階格式的結果。除了作為資料容器之外,讀數也可作為參考輸入串流中特定位置的識別碼。
呼叫 GetCurrentReading 會從輸入串流擷取最新的讀數。您可以傳入選擇性的 GameInputKind 篩選條件,將傳回的讀數限制為特定類型的輸入,例如遊戲台或鍵盤。您也可以傳入選擇性的 IGameInputDevice 篩選條件,將傳回的讀數限制為僅由指定裝置產生的讀數。這些篩選條件可以個別套用或一起套用。
IGameInputReading 執行個體是參考計數的單一物件。擷取讀數是極快速且輕量的作業,不會執行任何記憶體配置或複製,且 API 呼叫是無鎖定的,沒有核心模式轉換。由於讀數是單一物件,應用程式可以比較讀數指標是否相等,以判斷兩次呼叫 GetCurrentReading 是否傳回相同的讀數 (表示未產生新的輸入)。
輸入需求較不複雜的遊戲可能只需每個畫面輪詢一次新的輸入,並比較兩個讀數中儲存的狀態是否有差異 (如果它們不是相同的讀數)。不過,輸入需求較複雜的遊戲可能需要逐步查看輸入串流,以全面了解自上一個畫面以來發生的所有輸入狀態變更。這可透過 GetNextReading 和 GetPreviousReading 方法達成,這些方法允許與 GetCurrentReading 相同的篩選條件。輸入串流會在其緩衝區中保留過去半秒的歷程讀數。
或者,應用程式可以註冊在產生輸入時叫用的回呼。與前述的同步方法一樣,可以套用數個篩選條件來控制傳回哪些類型的讀數,以及來自哪些裝置。如需詳細資訊,請參閱進階 GameInput 主題一節中的 GameInput 回呼。
讀數中可用的資料類型取決於輸入裝置及其實體屬性。例如,來自標準鍵盤的讀數可能只包含鍵盤資料,而來自內建軌跡球之鍵盤的讀數可能同時包含鍵盤和滑鼠資料。
幾乎所有遊戲控制器產生的讀數都包含一般「控制器」資料,這只是匿名軸和按鈕狀態的集合。這讓具有輸入對應 UI 的應用程式能夠廣泛支援裝置。不過,許多遊戲控制器 (例如遊戲台) 也會在其讀數中公開熟悉的固定格式狀態,讓一般遊戲更容易使用。
IGameInputReading 介面包含以讀數支援的任何格式擷取狀態的方法。讀數提供的所有不同表示法都是預先計算的,因此這些方法只會複製幾個位元組的資料並傳回。
Last modified on October 6, 2026
