Play 游戏好友允许玩家创建和维护跨游戏的好友列表。您可以请求访问此好友列表,以帮助您的玩家与他们的好友一起玩您的游戏。有关好友系统的更多详细信息,请参阅好友概念页面。
开始之前
请参阅最佳实践指南,了解有关以最佳方式实现这些 API 的说明。
启用好友
要启用好友,请使用以下函数
查看好友:请求访问玩家的好友列表,以便您可以将他们的 Play 游戏好友添加到您的游戏内好友列表中。
查看玩家资料:让玩家查看另一位玩家的 Play 游戏资料。这对于玩家了解谁是他们的朋友以及如何连接到您游戏中的其他 Play 游戏玩家至关重要。这需要绑定到 UI 元素以触发弹出窗口。有关详细信息,请参阅好友指南。
查看好友
有两种方法可以加载好友,可以使用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.
}
});
此函数将显示相应的平台特定好友共享 UI。此 UI 会询问玩家是否要与游戏共享他们的好友。
使用 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 调用该函数。如果玩家和好友有游戏内昵称,请在调用中使用它们,以便为资料 UI 添加更多上下文
PlayGamesPlatform.Instance.ShowCompareProfileWithAlternativeNameHintsUI(
mFirstFriendId, /* otherPlayerInGameName= */ null, /* currentPlayerInGameName= */ null,
(result) => {
// Profile comparison view has closed.
});