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