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

Приложение Play Games 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) => {});

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

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

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