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 所在的同一目录中。旁加载的运行时使用此帮助程序进程接收键盘和鼠标输入。旁加载的运行时只使用与其位于同一位置的代理,绝不会使用已安装的可再发行组件中的代理。如果缺少该代理,运行时会回退为在游戏进程中接收键盘和鼠标输入。
如何选择运行时
使用旁加载的运行时无需更改代码。与 NuGet 包中的gameinput.lib 链接,并照常调用 GameInputCreate。首次调用 GameInputCreate 时,gameinput.lib 中的加载程序会在以下位置查找 GameInput 运行时:
- 系统目录中的内置运行时
GameInput.dll。 - 系统目录或 GameInput 可再发行组件安装目录中的已安装可再发行组件运行时
GameInputRedist.dll。 - 游戏可执行文件所在目录中的旁加载运行时
GameInputRedist.dll。
限制
在 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 和主机上使用 GameInputXBOX 主机上的 GameInput
GameInput API 版本管理
GameInput 基础
GameInput API 参考
