跳轉到主要內容
從 GameInput 4.0 開始,您可以將 GameInput 執行階段 GameInputRedist.dll 部署在與遊戲可執行檔相同的目錄中。這稱為側載。側載的執行階段可讓您的遊戲使用其建置和測試時所用的 GameInput 功能和修正,即使在未安裝 GameInput 可轉散發套件或安裝了較舊版本的系統上也是如此。此模型與 DirectX Agility SDK 所使用的模型類似。 PC 和 XBOX 主機都支援側載。在 XBOX 上,側載需要 2025 年 10 月 GDK (2510) 或更新版本,並可讓您的遊戲使用比 GDK 執行階段所支援版本更新的 API 版本,例如在 2026 年 10 月 GDK 之前使用 API v4。如需詳細資訊,請參閱 XBOX 主機上的 GameInput。
在 PC 上,安裝 GameInput 可轉散發套件仍是部署 GameInput 的慣用方式。已安裝的執行階段支援所有 GameInput 功能、由所有應用程式共用,並且會獨立於您的遊戲進行更新。當安裝可轉散發套件不可行時 (例如您的散發通道不支援執行安裝程式時,或在開發和測試電腦上),請使用側載。

取得可側載的執行階段

Microsoft.GameInput NuGet 套件在下列位置包含可側載的執行階段。 NuGet 套件不會將這些檔案複製到您的建置輸出。請在您的建置或封裝流程中新增一個步驟,將適用於目標平台和架構的檔案複製到遊戲的可執行檔旁邊。 在 PC 上,也請將 GameInputRawInputProxy.exe 部署在與 GameInputRedist.dll 相同的目錄中。側載的執行階段會使用此協助程式處理序來接收鍵盤和滑鼠輸入。側載的執行階段只會使用位於其旁邊的 Proxy,絕不會使用已安裝之可轉散發套件中的 Proxy。如果缺少 Proxy,執行階段會改為在遊戲的處理序中接收鍵盤和滑鼠輸入。
PC 和 XBOX 執行階段具有相同的檔案名稱。請確定您部署的是符合目標平台的複本。如果部署了錯誤的複本,GameInputCreate 會失敗並傳回 HRESULT_FROM_WIN32(ERROR_EXE_MACHINE_TYPE_MISMATCH) (0x800700D8)。

執行階段的選取方式

您不需要變更程式碼即可使用側載的執行階段。請連結 NuGet 套件中的 gameinput.lib,並如常呼叫 GameInputCreate。第一次呼叫 GameInputCreate 時,gameinput.lib 中的載入器會在下列位置尋找 GameInput 執行階段:
  1. 系統目錄中的內建執行階段 GameInput.dll。
  2. 系統目錄或 GameInput 可轉散發套件安裝目錄中的已安裝可轉散發執行階段 GameInputRedist.dll。
  3. 遊戲可執行檔目錄中的側載執行階段 GameInputRedist.dll。
載入器會使用檔案版本最高的執行階段。如果兩個執行階段的版本相同,則側載的執行階段優先於已安裝的可轉散發套件,而已安裝的可轉散發套件優先於內建執行階段。 在 PC 上,當載入了側載的執行階段,且系統上已安裝較新的 GameInput 執行階段時,側載的執行階段會將所有呼叫轉送至較新的已安裝執行階段。因此,側載的執行階段可作為最低版本:您的遊戲一律會使用您隨附的版本或較新的已安裝版本。遊戲仍會被視為側載,且下一節中的限制仍然適用。

限制

在 PC 上,某些 GameInput 功能依賴只有在安裝 GameInput 可轉散發套件時才會存在的元件,例如管理輸入焦點的 GameInput 服務。當您的遊戲在 PC 上使用側載的執行階段時,會套用下列限制。這些限制不適用於 XBOX 主機。
  • 以 true 呼叫 IGameInput::EnableBackgroundInput 不會有任何作用,因為啟用背景輸入也會宣告系統按鈕,而側載的執行階段無法宣告系統按鈕。
  • 輸入焦點不是由 GameInput 服務管理,因此 GameInput 不會一致地根據遊戲是否具有焦點來篩選輸入。視裝置而定,您的遊戲在沒有焦點時不一定會收到輸入。如果您的遊戲依賴一致的焦點行為,請在處理輸入之前檢查遊戲是否具有焦點,或安裝 GameInput 可轉散發套件。
  • 在 API 版本 v1 到 v3 中,IGameInput::SetFocusPolicy 只接受 GameInputDefaultFocusPolicy 和 GameInputEnableBackgroundInput。其他焦點原則 (包括任何旗標組合) 都會被忽略。
  • 在 API 版本 v1 到 v3 中,IGameInput::RegisterSystemButtonCallback 會失敗並傳回 GAMEINPUT_E_FEATURE_REQUIRES_INSTALL (0x838AD02B)。在 API 版本 v4 中,系統按鈕會在 GameInputKindSystemButton 種類的讀數中回報,這可搭配側載的執行階段運作。如需詳細資訊,請參閱 IGameInputReading::GetSystemButtonState。

建議

  • 針對 GameInput 標頭、gameinput.lib 和側載的執行階段,使用相同版本的 NuGet 套件。
  • 在已安裝和未安裝 GameInput 可轉散發套件的情況下,都要測試您的遊戲。
  • 如果您的遊戲在 PC 上需要背景輸入或一致的焦點行為,請安裝 GameInput 可轉散發套件來取代側載執行階段,或與其搭配使用。如需詳細資訊,請參閱透過 NuGet 在 PC 和主機上使用 GameInput。

另請參閱

透過 NuGet 在 PC 和主機上使用 GameInput
XBOX 主機上的 GameInput
GameInput API 版本控制
GameInput 基本概念
GameInput API 參考
最後修改於 2026年11月6日