在线服务控制台命令

你可以在游戏过程中使用控制台命令调试和测试在线服务插件。

执行控制台命令

在线服务插件控制台命令通过虚幻引擎(UE)控制台执行。在编辑器中运行(PIE)期间,可按一次(无反馈)或两次(详细反馈)波浪号(~)键来访问控制台。使用以下句法来执行在线服务控制台命令:

OnlineServices Index=   [ARG1] [ARG2] ...
Copy full snippet

OnlineServices Index=<NUM> <INTERFACE> <FUNCTION> [ARG1] [ARG2] ...

参数

下表说明了组成在线服务插件控制台命令的参数:

参数 说明 额外信息
NUM 要访问的服务的索引号。 你可以使用控制台命令 OnlineServices List 获取服务列表及其编号。 在正常情况下,"Index=0"是默认的平台服务。
INTERFACE 要访问的功能的接口。 例如身份验证、在线状态、数据统计等。 有关接口的完整列表,请参阅在线服务概述文档的接口部分。
FUNCTION 要使用的指定接口内的功能。 示例包括在线状态接口中的 UpdatePresence,身份验证接口中的 Login,等等。 有关所选接口可用功能的完整列表,请参阅接口的文档页面。 你可以在线服务接口登陆页面找到所有可用的接口。
ARG1, ARG2, … 按声明顺序组成 FUNCTION 的相关 Param 结构的参数。 有关参数的完整列表,请参阅虚幻引擎API文档查寻你想要的功能。 有关传递复杂参数类型的更多信息,请参阅下方的参数部分。

有关在线服务控制台命令的示例,请参阅本页的控制台命令示例部分。

参数

在线服务功能要求你传递多种参数类型。由于在线服务控制台命令提供了运行在线服务功能的机制,因此实现了与这些功能参数类型相对应的不同控制台命令参数类型。在线服务控制台命令有一种特殊的方法来处理这些类型,以帮助你通过虚幻引擎控制台传递复杂的C++类型,从而使它们能够被识别并用于这些功能。

特殊类型包括:

  • FAccountId
  • TSharedPtr
  • TOptional
  • TVariant
  • Objects
  • TArray
  • TMap

下表提供了有关传递这些特殊类型的更多信息以及一些示例:

类型 信息 示例
FAccountId 对于 FAccountId,你可以传递以下之一: 从0到9的任意整数,表示第n个本地用户。 由句柄的 ToString 方法输出,前缀是服务的名称,例如 epic:<EPIC_ID>。前缀旨在区分使用标准整数ID的不同平台。
TSharedPtr 正常键入参数名称。 技术上来说 TSharedRef可以实现,但使用 TSharedRef 会因为无法默认构造共享引用导致崩溃。目前,我们建议所有使用共享指针的控制台命令使用 TSharedPtr,而不是 TSharedRef。
TOptional 使用 null 传递未设置的可选值。
TVariant 传递TVariant的句法是 <TYPE>:<VALUE>。目前实现的类型有: s: string i: int64 i32: int32 b: bool u: user (FAccountId) d: double f: float e: enum 如果你有一个自定义枚举,则必须使用宏 MAKE_VARIANT_ENUM_INFO(<YOUR_ENUM_NAME>) 才能使其与在线服务控制台命令正常工作。如果有多个枚举,则必须限定整个枚举名称,例如,ELoginStatus::Unknown 就是 Unknown 的完全限定名称。在包含一个以上枚举的变量中使用 e: 是未定义的行为。 下面是每个类型的示例,每个类型都有一个类型和值对: s:MyString i:42000000000 i32:42 b:true u:0 d:2.718 f:3.14 e:Unknown
Objects 对于带有在线元数据的对象,请使用以大括号分隔的句法,直接声明所有参数。对象支持内部对象和数组。 下面是一些对象的示例: {true "AuthLogin" s:username s:password} {{5 3} {4 false}}
TArray 使用以方括号分隔的句法来表示 TArray。用于分隔列表中数值的逗号是可选项。 下面是相同的 TArray 的两个等价示例: [5, 3, 7, 9] [5 3 7 9]
TMap 使用以大括号分隔的句法来表示 TMap。TMap 不支持丰富的句法,因此嵌套对象、数组等可能无法正常解析。 下面是一个 TMap的示例: {licenseData=licenseDataText, kNumUsers=5}

控制台命令示例

本节包含几个控制台命令示例,你可以在项目中启用在线服务插件后使用这些命令。要使用在线服务控制台命令,请确保你已经:

  • 启用在线服务插件。
  • 已在你的项目中配置了可用的插件
  • 获取你希望在项目代码中使用的服务的引用。

如果你没有检索要使用的服务的引用并对每个接口进行适当配置,这些控制台命令在你的项目中可能不会像下面这样运行。

列出可用的在线服务

命令

OnlineServices List
Copy full snippet

OnlineServices List

此命令列出可通过在线服务插件访问的平台服务。

示例输出

0: Null
1: Epic
2: Steam
...
Copy full snippet

0: Null 1: Epic 2: Steam ...

在此示例输出中,有多个在线平台服务可用,可以在在线服务控制台命令中使用相应的索引号进行引用。例如,Null 可以用 Index=0 引用,Epic 可以用 Index=1 引用,Steam 可以用 Index=2 引用等等。

获取本地在线用户

命令

OnlineServices Index=0 Auth GetLocalOnlineUserByPlatformUserId 0
Copy full snippet

OnlineServices Index=0 Auth GetLocalOnlineUserByPlatformUserId 0

示例输出

LogConsoleResponse: Display: GetLocalOnlineUserByPlatformUserId result: { AccountInfo: [{ AccountId: Null:1 (ID_STRING), PlatformUserId: 0, LoginStatus: LoggedIn, Attributes: {DisplayName:String:ID_STRING} }] }
Copy full snippet

LogConsoleResponse: Display: GetLocalOnlineUserByPlatformUserId result: { AccountInfo: [{ AccountId: Null:1 (ID_STRING), PlatformUserId: 0, LoginStatus: LoggedIn, Attributes: {DisplayName:String:ID_STRING} }] }

获取作品文件

命令

OnlineServices Index=0 TitleFile GetEnumeratedFiles 0
Copy full snippet

OnlineServices Index=0 TitleFile GetEnumeratedFiles 0

示例输出

LogConsoleResponse: Display: GetEnumeratedFiles result: { Filenames: [StatusFile] }
Copy full snippet

LogConsoleResponse: Display: GetEnumeratedFiles result: { Filenames: [StatusFile] }

输出结果显示,有一个作品文件在后台在线服务中注册,名为"StatusFile"。

更多信息

有关本页内容的更多信息,请参阅以下页面:

  • 在线服务概述
  • 在线服务接口
  • 控制台变量