為什麼我應該讓遊戲的輸入程式碼以 GameInput 為基礎?
GameInput 是可更新的輸入平台。透過使用它,Windows 可以更有效地抽象化市面上各式各樣的輸入裝置,並透過平台更新持續改善對這些裝置的支援。使用 GameInput 後,您的遊戲會透過 Windows 和硬體發行版本自動更新,以便支援新裝置。 此外,GameInput 提供以往在 Windows 上無法使用的較新功能 (例如脈衝扳機),並為觸覺回饋和感應器等功能提供更好的支援。使用 GameInput,您的遊戲只需最少的程式碼變更即可運用這些功能。GameInput 支援哪些平台?
GameInput 可在下列平台上使用:- XBOX (從 2510 GDK 開始為 V.1+)
- Windows 10 (19H1/2019 年 5 月更新版及更新版本)
- Windows 11
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 執行階段。若為 v.1 及更新版本,這需要 Microsoft.GameInput 套件,使用者可以從 Microsoft.GameInput NuGet 套件中的 MSI 套件安裝。若要安裝最新版本的套件,您也可以從提高權限的命令提示字元執行
winget install Microsoft.GameInput。 - 確保您的應用程式連結至正確的 GameInput 程式庫。NuGet 套件中的最新版本可確保您的專案在不同端點/平台上使用正確的 GameInput 二進位檔。
- 確認您的 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,您應在應用程式初始化期間呼叫它。
