对于测试,游戏可能希望自动将用户添加到游戏中。 在使用 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
命令行工具。