Unity 游戏中的好友

Play 游戏好友允许玩家创建和维护跨游戏的的好友列表。您可以请求访问此好友列表,以帮助您的玩家与他们的好友一起玩您的游戏。有关好友系统的更多详细信息,请参阅好友概念页面

开始之前

  • 设置您的项目和 Google Play 游戏 Unity 插件。详情请参阅入门指南

  • 有关实施这些 API 的最佳方法的说明,请参阅最佳实践指南

有关实施这些 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 加载好友

另一种加载好友的方法是使用LoadFriendsLoadMoreFriends

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.
});