В этом документе рассказывается, как настроить проект Unity для использования плагина Google Play Games для Unity. Вы узнаете, как установить плагин и настроить проект Unity. В документе также рассказывается, как проверить сервис аутентификации.
Подготовка
Ознакомьтесь с требованиями к программному обеспечению. Настройте Play Console и установите редактор Unity.
Настройте Play Console для своей игры.
Установите Unity Editor и создайте игру в Unity.
Установка плагина
Чтобы скачать и установить плагин Google Play Games для Unity, выполните следующие действия в Unity Editor:
Скачайте репозиторий GitHub.
В каталоге
current-buildнайдите файлunitypackage. Этот файл представляет собой плагин. Например, он может выглядеть так:current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
Как настроить проект Unity
Чтобы настроить проект Unity в настройках проигрывателя, выполните следующие действия:
Откройте проект игры.
В Unity Editor нажмите Assets > Import Package > Custom Package (Ресурсы > Импортировать пакет > Специальный пакет), чтобы импортировать файл
unitypackageв ресурсы проекта.Убедитесь, что в качестве платформы сборки выбрана Android.
В главном меню выберите File > Build Settings (Файл > Настройки сборки).
Выберите Android и нажмите Сменить платформу.
В меню Window > Google Play Games должен появиться новый пункт. Если его нет, обновите объекты, нажав Объекты > Обновить, а затем попробуйте снова задать платформу сборки.
В редакторе Unity нажмите File > Build Settings > Player Settings > Other Settings (Файл > Настройки сборки > Настройки проигрывателя > Другие настройки).
В поле Целевой уровень API выберите версию.
В поле Скриптовый бэкенд введите
IL2CPP.В поле Целевые архитектуры выберите значение.
Запишите название пакета package_name.Эта информация может понадобиться вам позже.
Как создать новое хранилище ключей
Чтобы подтвердить учетные данные, вам понадобится ключ. Вот как это сделать:
- В редакторе Unity нажмите File > Build settings > Player settings (Файл > Настройки сборки > Настройки проигрывателя).
- В разделе Настройки публикации нажмите Менеджер хранилища ключей.
- В окне Keystore manager (Менеджер хранилища ключей) нажмите Keystore (Хранилище ключей) > Create new (Создать) > Anywhere (В любом месте).
- Выберите папку и укажите название хранилища ключей.
- В поле Пароль введите пароль и подтвердите его.
- Нажмите Добавить ключ.
Запишите название папки. Это имя можно использовать для создания учетных данных в Google Cloud.
Как скопировать ресурсы Android из Play Console
Каждое достижение, таблица лидеров и событие, созданные в Play Console, включают ресурс Android, который вы используете при настройке проекта Unity.
Чтобы получить ресурсы Android для игры, выполните следующие действия:
В Google Play Console откройте игру.
На странице Конфигурация сервисов Play Games (Привлечение пользователей > Сервисы Play Games > Настройка и управление > Конфигурация) нажмите Получить ресурсы.
В окне Resources (Ресурсы) нажмите на вкладку Android (XML).
Выберите и скопируйте контент ресурсов Android (
AndroidManifest.xml).
Как добавить ресурсы Android в проект Unity
Добавьте в проект Unity следующие ресурсы Android:
В редакторе Unity нажмите Window > Google Play Games > Setup > Настройка устройства Android.
- В поле Каталог для сохранения констант введите название папки для файла констант.
В поле Название класса констант введите название класса C#, который нужно создать, включая пространство имен.
Например, если класс C# –
id.csи он находится в папке Assets > myproject > scripts > id.cs. Название класса констант может бытьmyproject.scripts.id.В поле Определение ресурсов вставьте данные ресурсов Android (файл
AndroidManifest.xml), скопированные из Google Play Console.Необязательно: в поле Идентификатор клиента введите идентификатор клиента связанного веб-приложения.
Чтобы получить идентификатор клиента для игры из Google Cloud, ознакомьтесь с разделом Создание идентификаторов клиентов.
Это необходимо, только если у вас есть веб-сервер для игры и вам нужен код авторизации сервера, чтобы обменять его на токен доступа на внутреннем сервере, или если вам нужен токен идентификатора игрока для выполнения других вызовов API, не связанных с игрой.
Нажмите Настройка. Это позволит настроить игру с помощью идентификатора клиента и создать класс C#, содержащий константы для каждого из ресурсов Android.
В редакторе Unity нажмите Window > Google Play Games > Setup > Nearby Connections Setup (Окно > Google Play Игры > Настройка > Настройка Nearby Connections).
В поле Nearby connection service ID (Идентификатор сервиса подключения поблизости) введите package_name.
Используйте тот же package_name, что и при настройке проекта Unity.
Нажмите Настройка.
Выберите социальную платформу
Плагин сервисов Google Play Games реализует социальный интерфейс Unity, чтобы обеспечить совместимость с играми, в которых этот интерфейс уже используется для интеграции с другими платформами. Однако некоторые функции доступны только в Google Play Играх и предлагаются в качестве расширений стандартного социального интерфейса Unity.
Стандартные вызовы API доступны через объект Social.Active, который является ссылкой на интерфейс ISocialPlatform. Нестандартные расширения сервисов Google Play Games можно получить, выполнив приведение объекта Social.Active к классу PlayGamesPlatform, в котором доступны дополнительные методы.
Использовать плагин, не переопределяя социальную платформу по умолчанию
Когда вы вызываете PlayGamesPlatform.Activate, сервисы Google Play Games становятся реализацией социальной платформы по умолчанию. Это означает, что плагин сервисов Google Play Games выполняет статические вызовы методов в Social и Social.Active, что является ожидаемым поведением для большинства игр, использующих плагин.
Однако, если по какой-либо причине вы хотите сохранить доступ к реализации по умолчанию (например, чтобы отправлять достижения и рейтинги игроков на другую социальную платформу), вы можете использовать плагин сервисов Google Play Games, не переопределяя ее. Вот как это сделать:
- Вызовите метод
PlayGamesPlatform.Activate. - Если
Xyz– это название метода, который вы вызываете в классеSocial, не вызывайтеSocial.Xyz. Вместо этого вызовитеPlayGamesPlatform.Instance.Xyz. - При взаимодействии с сервисами Google Play Games используйте свойство
PlayGamesPlatform.InstanceвместоSocial.Active.
Это позволит вам одновременно отправлять результаты и достижения в две или более социальных сетей:
// Submit achievement to original default social platform
Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);
// Submit achievement to Google Play
PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);
Как проверить сервис аутентификации
При запуске игры автоматически выполняется попытка подключения к сервисам Play Games с использованием аутентификации платформы. Если подключение установлено, в игре появится запрос на вход, и вы сможете использовать плагин сервисов Google Play Games для Unity.
Если пользователь ещё не пользовался сервисами Google Play Игр на своем устройстве, он автоматически перейдет на экран настройки, где сможет создать аккаунт Play Игр.
В методе Start вашего скрипта отслеживайте результат попытки автоматической аутентификации, получайте статус аутентификации и отключайте функции сервисов Play Игр, если пользователь не аутентифицирован.
Если версия плагина Unity ниже v11, функция аутентификации будет недоступна.
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status) {
if (status == SignInStatus.Success) {
// Continue with Play Games Services
} else {
// Disable your integration with Play Games Services or show a login button
// to ask users to authenticate. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
}
}
Код результата – это перечисление, которое можно использовать, чтобы определить причину сбоя аутентификации.
Если вы предпочитаете использовать платформу Unity Social, то можете воспользоваться следующим кодом:
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Activate();
Social.localUser.Authenticate(ProcessAuthentication);
}
Вы не можете вызывать API сервисов Google Play Games, пока не получите успешное возвращаемое значение от Authenticate. Поэтому мы рекомендуем показывать экран ожидания, пока не будет вызван обратный вызов, чтобы пользователи не могли начать играть до завершения аутентификации.
Как предотвратить автоматическое создание профиля
Вы можете отключить автоматические запросы на создание профиля с помощью файла манифеста. Это позволит пользователям без профиля сервисов Play Games запускать игру, не создавая профиль сервисов Play Games. Подробнее о вариантах создания профиля…
Чтобы использовать эту функцию, убедитесь, что:
- На устройстве нет профиля сервисов Play Games ни в одном из аккаунтов Google, в которые выполнен вход.
- Ваша игра интегрирована с плагином Unity для сервисов Play Games версии
2.1.0или более поздней.
В файле
AndroidManifest.xmlдобавьте тегcom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONв элемент<meta-data>и атрибуты в элемент<application>:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>
Если установить для этого флага значение true, сервисы Play Games будут знать, что ваша игра будет обрабатывать процесс создания профиля. В результате сервисы Play Games не будут автоматически показывать интерфейс создания профиля пользователям на устройстве, у которых ещё нет профиля сервисов Play Games.
Если пользователь не прошел аутентификацию из-за отсутствия профиля сервисов Play Games, вы можете использовать метод PlayGamesPlatform.Instance.IsAuthenticated(). Он возвращает значение
false, поскольку создать профиль не удалось. Чтобы устранить эту проблему, запустите процесс создания профиля, вызвав метод PlayGamesPlatform.Instance.ManuallyAuthenticate().if (!PlayGamesPlatform.Instance.IsAuthenticated()) { // The user is unauthenticated, likely due to a missing Play Games profile. // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger // the profile creation UI. PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => { // ... }); }После добавления тега подавления используйте окно
logcat, чтобы проверить, что он добавлен. В выходных данныхlogcatбудет сообщение, похожее на следующее: "Game opted out of automatic profile creation prompt (using manifest)" (В игре отключен запрос на автоматическое создание профиля (с помощью манифеста)).
Как использовать функцию подписания приложений в Google Play
Google управляет ключом подписи вашего приложения и защищает его с помощью функции подписания приложений в Google Play. Функция подписания приложений в Google Play позволяет подписывать оптимизированные наборы Android App Bundle (файлы с расширением AAB), предназначенные для распространения. Функция подписания приложений в Google Play хранит ключ подписи приложения в надежной инфраструктуре Google. Чтобы использовать функцию подписания приложений в Google Play, сначала создайте и скачайте файл AAB из Unity Editor. Затем вы можете загрузить файл AAB в Play Console и создать выпуск для внутреннего тестирования.
Как создать AAB-файл
Чтобы создать AAB-файл в Unity Editor, выполните следующие действия:
- В редакторе Unity нажмите File > Build settings (Файл > Настройки сборки).
Выберите Создать набор приложений ( Google Play).
Дополнительную информацию можно найти в справочнике по настройкам сборки Android.
Нажмите Создать.
Скачайте AAB-файл из редактора Unity.
Как создать версию для внутреннего тестирования
Чтобы создать выпуск для внутреннего тестирования и добавить тестировщиков в Play Console, выполните следующие действия:
- Выберите игру в Google Play Console.
- Перейдите на страницу Тестирование и выпуск (Тестирование > Внутреннее тестирование).
- Нажмите Загрузить и выберите файл AAB.
- В поле Сведения о выпуске введите название.
- Нажмите Далее и проверьте сведения о релизе.
- Нажмите Сохранить и опубликовать.
На вкладке Тестировщики нажмите Создать список рассылки и добавьте до 100 тестировщиков.
Подробнее о внутреннем тестировании…
В поле URL или адрес электронной почты для отзывов введите URL или адрес электронной почты, на который можно отправлять отзывы.
Нажмите Сохранить.
Как проверить учетные данные для подписи приложений
- Выберите игру в Google Play Console.
- Перейдите на страницу Тестирование и выпуск (Настройка > Подписи приложений).
- Проверьте учетные данные для подписи приложений.
Как создать сборку и запустить проект
На этом этапе можно создать и запустить проект игры. Когда игра запустится, вы увидите попытку автоматической аутентификации.
Вам понадобится физическое устройство Android с включенной отладкой по USB или эмулятор, на котором можно запустить разработанный проект.
Как получить коды аутентификации сервера
Чтобы получить доступ к API Google на внутреннем веб-сервере от имени текущего игрока, вам нужно получить код аутентификации от клиентского приложения и передать его в веб-серверное приложение. Затем код можно обменять на токен доступа для вызова различных API. Информацию о рабочем процессе можно найти в статье Как войти с аккаунтом Google на сайте.
Чтобы получить код доступа для серверной части:
- Добавьте идентификатор веб-клиента для игры в Play Console.
- Выберите игру в Google Play Console.
- На странице Конфигурация (Привлечение пользователей > Игровые сервисы Play > Настройка и управление > Конфигурация) нажмите Добавить учетные данные.
- На странице Add credential (Добавить учетные данные) выберите Game server (Игровой сервер).
- Создайте идентификатор клиента OAuth 2.0.
- Запишите значение идентификатора клиента. Это значение потребуется вам позже.
Добавьте идентификатор веб-клиента в Unity Hub.
- В Unity Hub настройте Google Play Games для Unity и выполните аутентификацию.
- В Unity Hub выберите Window > Google Play Games > Setup > Настройка устройства Android.
- Введите значение идентификатора клиента.
Получение кода авторизации сервера для дополнительных областей действия.
C#
using GooglePlayGames.BasicApi; // Define selectedScope having additional identity scopes. private List
selectedScopes = new List (); // Add scopes you want to request. selectedScopes.Add(AuthScope.OPEN_ID); selectedScopes.Add(AuthScope.PROFILE); selectedScopes.Add(AuthScope.EMAIL); // Call RequestServerSideAccess with additional scopes and retrieve // authcode and grantedscopes list. PlayGamesPlatform.Instance.RequestServerSideAccess( /* forceRefreshToken= */ false,selectedScopes (AuthResponse authResponse) => { string authCode = authResponse.GetAuthCode(); List grantedScopes = authResponse.GetGrantedScopes(); // send authCode to server... });
Как настроить и добавить функции
Включите функции сервисов Play Games.
Добавьте в игру функции с помощью API сервисов Play Игр:
Recall API для Unity (поддерживается только в плагине Unity версии 11 и выше)