对于测试,游戏可能希望自动将用户添加到游戏中。 在使用 Microsoft 游戏开发工具包 (GDK) 的情况下,仅当游戏调用 XUserAddAsync 时,才会添加用户。 就自动化而言,此功能有以下两个主要限制:
- 如果在使用
AddDefaultUserSilently标志的情况下调用XUserAddAsync,则不会获取 UI(有助于实现自动化)。 但是,只能获取启动游戏的用户。 使用此标志重复调用 API 不会更改结果。 你将继续获取针对相同用户的新句柄。 - 如果在不使用
AddDefaultUserSilently标志的情况调用XUserAddAsync,将显示 UI,并等待你按下按钮。 这将中断自动操作。
为了帮助在测试代码中自动添加用户,Microsoft 游戏开发工具包 (GDK) 支持启用无外设选项,可以在其中添加用户而无需具有需要用户输入的 UI 展示。 下面的步骤概述了基本方法。
- 要将已登录用户添加到主机,可以使用带
signin选项的 xbuser(NDA 主题)要求授权 命令行工具。 为每个用户重复此步骤。 - 要抑制在游戏中添加用户时通常会显示的 UI,可以使用带
HeadlessXuser选项的 xbconfig(NDA 主题)要求授权 命令行工具,如下所示。xbconfig HeadlessXUser=true - 启动游戏。
- 进入游戏后,每次调用不带
AddDefaultUserSilently标志的XUserAddAsync都将返回登录到主机的第一位用户,游戏中没有与之关联的未完成XUserHandle对象。 - 如果游戏继续调用
XUserAddAsync,它们最终会耗尽已登录到主机的用户数。 执行此操作后,XUserAddAsync将返回E_ABORT。 当用户取消登录到主机(或以其他方式退出 UI)时,XUserAddAsync将返回此错误。 - 出于测试目的,游戏可能需要指导已登录到主机的测试帐户数。 为了便于操作,游戏可以调用
CreateProcess,并使用list选项启动wduser命令行工具。