Skip to main content

為什麼我應該讓遊戲的輸入程式碼以 GameInput 為基礎?

GameInput 是可更新的輸入平台。透過使用它,Windows 可以更有效地抽象化市面上各式各樣的輸入裝置,並透過平台更新持續改善對這些裝置的支援。使用 GameInput 後,您的遊戲會透過 Windows 和硬體發行版本自動更新,以便支援新裝置。 此外,GameInput 提供以往在 Windows 上無法使用的較新功能 (例如脈衝扳機),並為觸覺回饋和感應器等功能提供更好的支援。使用 GameInput,您的遊戲只需最少的程式碼變更即可運用這些功能。

GameInput 支援哪些平台?

GameInput 可在下列平台上使用:
  • XBOX (從 2510 GDK 開始為 V.1+)
  • Windows 10 (19H1/2019 年 5 月更新版及更新版本)
  • Windows 11
雖然 GameInput v.0 是 Windows SDK 和 Microsoft Game Development Kit (GDK) 的一部分,但使用較新版本進行編譯時,無論主機或 PC 都需要使用 NuGet 套件。GameInput v.1+ 執行階段從 2510 GDK 開始可在主機上使用,但使用此執行階段需要針對最新 GameInput NuGet 套件中的標頭/程式庫進行建置和連結。PC 和主機最新版本的 API 一律可在 Microsoft.GameInput NuGet 套件中取得。

XBOX 和 PC 需要不同的版本嗎?

不需要,相同的 GameInput API 可在所有平台上運作。從 2510 GDK 開始,最新的 GameInput API 可在 XBOX 和 PC 上使用,Microsoft.GameInput NuGet 套件中提供相同的標頭和二進位檔。只有 PC 需要 GameInput 安裝程式,因為在 XBOX 上,執行階段已隨附於 GDK。

GameInput 是否能與 Unreal Engine 等常用引擎搭配使用?

可以,但整合程度因引擎而異。部分引擎以引擎外掛程式的形式提供第一方 GameInput 支援,其他引擎則仰賴您自行整合的範例或原生外掛程式。
  • Unreal Engine:從 Unreal Engine 5.4 開始,GameInput 支援以一組外掛程式的形式隨引擎提供。Game Input Base 提供核心功能和介面,Game Input (Windows) 為 Win64 和 WinGDK 實作該介面,XBOX Common Game Input 則為 XBOX One 和 XBOX Series X|S 實作該介面。在您的專案中啟用這些外掛程式,即可在 PC 和主機上透過 GameInput 傳遞輸入。如需詳細資訊,請參閱 Unreal Engine 的 Microsoft GDK 外掛程式。
  • Godot:XBOX Godot 範例包含將 GameInput 繫結至 Godot 的 GDExtension,包括將 GameInput 橋接至 Godot 的 Input 和 InputMap 系統。這是供您針對專案建置和調整的參考整合,而非內建的引擎功能。如需詳細資訊,請參閱開始使用 Godot。
  • Unity:目前沒有任何 Microsoft GDK 套件在 PC 上向 Unity 公開 GameInput,因此 PC 上的 Unity 遊戲通常會透過 Unity Input System 讀取輸入。在 XBOX Series X|S 和 XBOX One 上,適用於 Unity 的 GXDK Input System 套件會為 Unity Input System 新增主機專屬功能。如需詳細資訊,請參閱適用於 Unity 的 GDK 套件。
如果您的引擎未提供 GameInput 整合,或您想要使用引擎未公開的 GameInput 功能,您可以使用 Microsoft.GameInput NuGet 套件,直接從原生程式碼呼叫 GameInput。

我的應用程式找不到 GameInput,該檢查什麼?

  1. 確認目標電腦上已安裝 GameInput 執行階段。若為 v.1 及更新版本,這需要 Microsoft.GameInput 套件,使用者可以從 Microsoft.GameInput NuGet 套件中的 MSI 套件安裝。若要安裝最新版本的套件,您也可以從提高權限的命令提示字元執行 winget install Microsoft.GameInput。
  2. 確保您的應用程式連結至正確的 GameInput 程式庫。NuGet 套件中的最新版本可確保您的專案在不同端點/平台上使用正確的 GameInput 二進位檔。
  3. 確認您的 Windows 版本支援 GameInput (19H1 或更新版本)。

從 XInput 移植到 GameInput 有多困難?

許多 XInput 函式都能一對一對應到 GameInput 的對等函式,簡化了兩者之間的移植工作。主要差異在於 GameInput 使用 C++ 介面,而非一般 C 函式。GameInput 也提供 XInput 中沒有的額外功能,例如存取 XBOX One 控制器和其他類似裝置上的脈衝扳機。

如何從 DirectInput 或 Raw Input 移植?

GameInput 在 GameInputDeviceInfo 結構中提供介面路徑。此欄位與 DirectInput API 使用的欄位相同,讓應用程式可以繼續使用現有的 DirectInput 程式碼進行裝置列舉和資訊擷取,同時將輸入讀取和其他功能移轉至 GameInput。如需詳細資訊,請參閱 GameInput 移植指南。

GameInput 服務的作用是什麼?

GameInput 服務負責仲裁系統上輸入裝置的存取,並為其他應用程式提供實用的相容性和抽象層。GameInput 服務的功能包括:
  • 處理輸入篩選和同步處理
  • 提供平台更新和裝置驅動程式改進
  • 在 GameInput 用戶端執行個體之間協調輸入裝置的存取
安裝程式可確保執行階段正確註冊,且服務已正確設定以獲得最佳效能。

我可以從轉譯執行緒呼叫 GameInput 嗎?

可以,幾乎所有 GameInput 函式都能在轉譯執行緒等時間敏感的內容中安全使用。主要的例外是 GameInputCreate,您應在應用程式初始化期間呼叫它。

另請參閱

GameInput 簡介 GameInput API 版本控制 從 XInput 移植到 GameInput
Last modified on October 6, 2026