Друзья в играх Unity

Play Games Friends позволяет игрокам создавать и поддерживать список друзей для разных игр. Вы можете запросить доступ к этому списку друзей, чтобы помочь своим игрокам играть в вашу игру со своими друзьями. Подробнее о системе друзей см. на странице концепции Friends .

Прежде чем начать

Инструкции по наилучшему способу внедрения этих API см. в рекомендациях по передовому опыту .

Включить друзей

Чтобы включить друзей, используйте следующие функции:

  • Просмотр друзей : запросите доступ к списку друзей игрока, чтобы вы могли добавить его друзей по играм в свой список друзей в игре.

  • Просмотр профиля игрока : разрешить игроку просматривать профиль Play Games другого игрока. Это необходимо, чтобы игрок знал, кто его друзья, и мог подключаться к другим игрокам Play Games в вашей игре. Это необходимо привязать к элементу пользовательского интерфейса, чтобы вызвать всплывающее окно. Подробности см. в руководстве по друзьям .

Посмотреть друзей

Существует два способа загрузки друзей: с помощью фреймворка 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) => {});

Посмотреть профиль игрока

Чтобы добавить или удалить игрока в друзья, используйте функцию show and compare profile. Эта функция запускает диалоговое окно нижнего листа, показывающее профиль пользователя Play Games; вызовите функцию с идентификатором игрока запрошенного игрока. Если у игрока и друга есть игровые псевдонимы, используйте их в вызове, чтобы добавить больше контекста в пользовательский интерфейс профиля:

PlayGamesPlatform.Instance.ShowCompareProfileWithAlternativeNameHintsUI(
    mFirstFriendId, /* otherPlayerInGameName= */ null, /* currentPlayerInGameName= */ null,
    (result) => {
        // Profile comparison view has closed.
});