> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GameInput 常见问题

> GameInput 常见问题

### 为什么应该使用 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) 的一部分，但使用更新版本进行编译需要使用 NuGet 包，主机和 PC 都是如此。GameInput v.1+ 运行时自 2510 GDK 起在主机上可用，但使用此运行时需要针对最新 GameInput NuGet 包中的头文件/库进行构建和链接。PC 和主机 API 的最新版本始终可在 [Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) NuGet 包中获取。

### 我在 XBOX 和 PC 上是否需要不同的版本？

不需要，同一 GameInput API 可在所有平台上工作。自 2510 GDK 起，最新的 GameInput API 在 XBOX 和 PC 上都可用，[Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) NuGet 包中提供的是相同的头文件和二进制文件。GameInput 安装程序仅在 PC 上需要，因为 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 路由输入。更多信息,参见 [Microsoft GDK plug-ins for Unreal Engine](/build/gdk-and-engines/unreal/unreal#microsoft-gdk-plug-ins-for-unreal-engine)。
* **Godot**:XBOX Godot 示例包含一个将 GameInput 绑定到 Godot 的 GDExtension,并会将 GameInput 桥接到 Godot 的 `Input` 与 `InputMap` 系统。这是一个供你构建并适配到自己项目中的参考集成,而不是引擎的内置功能。更多信息,参见 [Godot 入门](/build/gdk-and-engines/godot#whats-included)。
* **Unity**:目前没有 Microsoft GDK 包在 PC 上向 Unity 公开 GameInput,因此 PC 上的 Unity 游戏通常通过 Unity Input System 读取输入。在 XBOX Series X|S 与 XBOX One 上,面向 Unity 的 GXDK Input System 包为 Unity Input System 添加了主机专用功能。更多信息,参见 [GDK packages for Unity](/build/gdk-and-engines/unity/unity#gdk-packages-for-unity)。

如果你的引擎没有提供 GameInput 集成,或者你想使用引擎未暴露的 GameInput 功能,可以使用 [Microsoft.GameInput](https://www.nuget.org/packages/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 移植指南](/build/core-features/common/input/porting/input-porting)。

### GameInput 服务做什么？

GameInput 服务负责协调对系统输入设备的访问，并为其他应用程序提供有用的兼容层和抽象层。GameInput 服务的功能包括：

* 处理输入过滤与同步
* 提供平台更新与设备驱动改进
* 在多个 GameInput 客户端实例之间协调对输入设备的访问

安装程序确保运行时正确注册，服务已针对最佳性能进行正确配置。

### 我可以从渲染线程调用 GameInput 吗？

可以，几乎所有 GameInput 函数在渲染线程等时序敏感的上下文中都是安全的。主要例外是 `GameInputCreate`，应在应用程序初始化期间调用。

<a id="seeAlsoSection" />

## 另请参阅

[GameInput 简介](/build/core-features/common/input/overviews/input-overview)

[GameInput API 版本管理](/build/core-features/common/input/overviews/input-versioning)

[从 XInput 移植到 GameInput](/build/core-features/common/input/porting/input-porting-xinput)


## Related topics

- [输入](/zh-CN/build/core-features/common/input/gc-input-toc.md)
- [概述](/zh-CN/build/core-features/common/input/overviews/index.md)
- [PC 开发者常见问题](/zh-CN/build/gdk-and-engines/guides/pc-faq.md)
- [XBOX Insider 计划 Flighting 常见问题](/zh-CN/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-xbox-flighting-faq.md)
- [Economy 版本 2 (V2) 常见问题解答](/zh-CN/services/playfab/economy-monetization/economy-v2/faq.md)
