在线状态接口

在线状态接口总览。

Choose your operating system:

Windows

macOS

Linux

登入在线服务后,使用者通常能看到好友以及其他在线用户的相关信息,例如这些用户是否在线、其正在进行的行为、其是否能够加入比赛等。 在线子系统通过 使用者状态接口(Presence Interface) 访问这些功能。

使用者状态

多数在线服务均可识别每个使用者的数种基础状态,例如"在线"、"离线"和"离开",以及游戏特定的状态(如"在大厅中"或"在(地图)上进行一场比赛")。 然而这些设置并非固定可见,或者因服务特定的隐私政策和账户设置而仅对部分使用者(并非所有)可见。 在线子系统不会与这些政策或设置进行交互,但其获取的信息将受到它们影响。

定义使用者状态

FOnlineUserPresence类包含与使用者状态相关的所有信息。 除使用者是否在线、使用者是否正在进行游戏之类的基础信息外,使用者状态(使用FOnlineUserPresenceStatus类)还保存了更多深入信息。 通常包括要显示的本地化字符串、一个描述使用者基础状态的列举值(类型为EOnlinePresenceState),以及保存任意游戏特定自定义数据的一套键值对(其可在构建准确使用者状态显示消息时使用)。

获取其他使用者的相关信息

收集特定用户使用者状态信息的基础流程是通过 QueryPresence 对在线服务进行请求,用 FUniqueNetId 指定该用户。 该操作完成后,提供的 FOnPresenceTaskCompleteDelegate 将被调用,指出用户以及请求成功或失败。 如成功,本地使用者状态信息缓存将包含最新使用者状态信息,其可通过 GetCachedPresence 函数获得。

部分在线服务将主动通知在线子服务关于使用者状态的信息。 在这些服务上,虽然并不一定需要调用 QueryPresence 或等候其委托,但常规的代码流程应保持不变,使其在多个服务上均可通用。

设置使用者状态

SetPresence 函数通过在线服务来设置本地使用者的状态。 由于需要验证在线服务的新状态,因此这是一个异步调用,完成时将调用一个类型为 FOnPresenceTaskCompleteDelegate 的委托。 使用者状态自身由FOnlineUserPresenceStatus类进行描述。