借助 Play 游戏好友功能,玩家可以创建和维护跨游戏好友列表。您可以请求访问此好友列表,帮助玩家与好友一起畅玩您的游戏。如需详细了解好友系统,请参阅好友概念页面。
前期准备
如需了解实现这些 API 的最佳方式,请参阅最佳实践指南。
启用好友功能
如需启用好友功能,请使用以下功能:
查看好友:请求访问玩家的好友列表,以便将他们的 Play 游戏好友添加到游戏内好友列表。
查看玩家资料:让玩家查看其他玩家的 Play 游戏玩家资料。这一点非常重要,可让玩家了解好友,并与游戏中的其他 Play 游戏玩家建立联系。这需要关联到界面元素以触发弹出式窗口。如需了解详情,请参阅好友指南。
查看好友
可通过两种方式加载好友:使用 ISocial
框架加载,或直接使用 PlayGamesPlatform
加载。
使用 ISocial 框架加载好友
Social.localUser.LoadFriends((success) => {
Debug.Log("Friends loaded OK: " + ok));
foreach(IUserProfile p in Social.localUser.friends) {
Debug.Log(p.userName + " is a friend");
}
不过,如果当前玩家尚未授权游戏访问这些信息,此调用将会失败。请使用 GetLastLoadFriendsStatus
检查 LoadFriends
是否是因未征得用户同意而失败。
PlayGamesPlatform.Instance.GetLastLoadFriendsStatus((status) => {
// Check for consent
if (status == LoadFriendsStatus.ResolutionRequired) {
// Ask for resolution.
}
});
游戏可以通过调用 AskForLoadFriendsResolution
请求当前玩家共享好友列表。
PlayGamesPlatform.Instance.AskForLoadFriendsResolution((result) => {
if (result == UIStatus.Valid) {
// User agreed to share friends with the game. Reload friends.
} else {
// User doesn’t agree to share the friends list.
}
});
调用此函数后,系统将显示相应的平台专用好友共享界面。此界面上会显示提示,询问玩家是否愿意与游戏共享好友。
使用 PlayGamesPlatform 加载好友
另外,还可以使用 LoadFriends
和 LoadMoreFriends
加载好友:
PlayGamesPlatform.Instance.LoadFriends(pageSize, forceReload, (status) => {
// Check if the call is successful and if there are more friends to load.
});
PlayGamesPlatform.Instance.LoadMoreFriends(pageSize, (status) => {
// Check if there are more friends to load.
});
pageSize
参数表示请求访问此页面的条目数。请注意,如果已存在缓存数据,返回的缓冲区包含的数据量可能超过这个大小。如果集合包含足够的记录,那么缓冲区包含的条目一定至少达到这个数量。如果将 forceReload
设置为 true
,此调用将清除本地缓存的所有数据,并尝试从服务器提取最新数据。这通常用于用户发起的刷新等操作。通常应将其设置为 false
,以充分利用数据缓存。
如果回调返回 LoadFriendsStatus.LoadMore
,系统会加载更多好友。LoadFriendsStatus.ResolutionRequired
表示用户尚未共享好友列表,您可以直接调用 PlayGamesPlatform.Instance.AskForLoadFriendsResolution
。
确定好友列表公开范围
使用 PlayGamesPlatform.Instance.GetFriendsListVisibility
检查用户是否已与游戏共享好友列表。可能返回的状态包括:
FriendsListVisibilityStatus.RequestRequired
,表示您必须征求用户意见。FriendsListVisibilityStatus.Visible
,表示应该可以成功加载好友列表。FriendsListVisibilityStatus.Unknown
,通常不应出现。您可以将forceReload
设为 true,以刷新数据。
PlayGamesPlatform.Instance.GetFriendsListVisibility(forceReload, (friendsListVisibilityStatus) => {});
查看玩家资料
如需将玩家添加为好友或从好友中移除玩家,请使用显示并比较玩家资料函数。此函数会触发底部动作条对话框,其中显示用户的 Play 游戏玩家资料;调用此函数时应包含所请求玩家的玩家 ID。如果玩家和好友在游戏内有昵称,请在调用中使用这些昵称,以便为玩家资料界面提供更多背景信息:
PlayGamesPlatform.Instance.ShowCompareProfileWithAlternativeNameHintsUI(
mFirstFriendId, /* otherPlayerInGameName= */ null, /* currentPlayerInGameName= */ null,
(result) => {
// Profile comparison view has closed.
});