? Предисловие
Интеграция SDK Яндекс Игр для Unity. Плагин автоматизирован и сделан так, чтобы максимально облегчить интеграцию SDK.
Многие параметры в плагине описаны во всплывающих подсказках.
Обратите внимания на демо сцену! В ней есть примеры всех функций и много скриптов для образца работы с плагином.
В среде разработки Unity плагин не имеет реального подключения к SDK Яндекса, но симулирует его. Ошибки в консоли при работе с плагином - это ненормальное явление.
Все инициализации и проверки плагин производит автоматически при запуске игры.
В данной документации не будет описываться работа с настройками проекта под WebGL или даваться подробные описания работы с сервисами Яндекса. Уже существуют статьи на подобные темы. Больше всего информации по Яндекс Играм Вы найдете в официальном Telegram чате. Если у Вас возникают вопросы по Яндекс Играм, сначала попробуйте найти ответ с помощью поиска по официальному чату. Если проблема касается плагина, Вы так же можете попробовать найти её решение с помощью поиска в чате по данному плагину.
Изначально был сделан видео-урок. Но на данный момент он не объясняет новые функции. Это не проблема, новые функции было бы логичнее объяснить в новых отдельных видео. Проблема в том, что некоторые моменты поменялись. Всё же, основная суть в видео остаётся неизменной! Поэтому советую прочитать документацию и посмотреть видео. В видео есть много полезной информации, которая хорошо усваивается визуально.
https://www.youtube.com/watch?v=iS5a_LD0hvk&t=92s
? Ссылки
Все обсуждения по плагину и оповещение об обновлениях в телеграм чате:
В закрепах найдете обновления и всю информацию в том числе ссылки на скачивание.
Asset Store
PluginYG - Yandex Game integration
GitHub
https://github.com/JustPlay-Max/PluginYG
Вся информация по плагину и другие полезные ссылки на Trello. Здесь вы сможете удобно посмотреть версии плагина, описание исправлений и дополнений для каждой версии, ссылки на скачивание, список реализованных функций и планы на будущее:
Видо урок на Дзен:
Библиотека Newtonsoft Json .NET
С версии 1.5 для импорта данной библиотеки нужно лишь нажать на кнопку активации Newtonsoft в настройках плагина Info YG.
В ином случае, Вы можете импортировать библиотеку через Package Manager:
- Нажмите на + в левом верхнем углу
- Выберите Add Package from git URL…
- Введите com.unity.nuget.newtonsoft-json
- Нажмите Add
? Импорт плагина
Вы можете скачать плагин тремя путями:
-
Unity Asset Store
Обычная установка как и все другие ассеты.
-
GitHub
На GitHub нужно скачать архив и распаковать файлы плагина находящиеся в папке Assets в Ваш проект.
-
Яндекс Диск | Телеграм чат (Закрепы)
Самые актуальные версии плагина можно найти в телеграм чате PluginYG в закрепе.
На диске хранятся версии плагина в формате unitypackage. Скачав пакет, просто откройте его или перетащите в конкретный проект Unity в окно Projects.
Если обновляете плагин в проекте (устанавливаете не первый раз):
Перед импортом новой версии плагина рекомендуется удалить старую.
Удалять необходимо папки YandexGame и WebGLTemplates.
Но! Оставьте папку YandexGame → WorkingData, в ней хранятся сохранения игры и настройки плагина.
Также не забудьте оставить Ваши изображения background и logo в папке WebGLTemplates → PluginYG, если таковые имеются.
❓ Часто задаваемые вопросы
-
Нужно ли мне что то прописывать в HTML?
Нет. Для работы плагина Вам не нужно заходить в html и css скрипты. Но для собственного расширения функционала, конечно, вы можете что то изменять в любых скриптах плагина.
-
Как узнать устройство, с которого запущена игра?
Нужно получить данные об устройстве (смотрите раздел “Данные”). Данные можно получать только после инициализации SDK (смотрите раздел “Инициализация”).
-
Ошибки при импорте плагина?
- В проекте отсутствует библиотека Newtonsoft Json.net (Смотрите раздел “Импорт плагина”)
- Не корректно настроен компонент Graphic Settings YG (Смотрите раздел “Настройки графики от плагина”)
- Иные ошибки могут быть из-за устаревшего ПО. Плагин работает на Unity 2021 версиях и выше.
- Редактор кода не поддерживает синтаксис плагина. В таком случае может помочь обновление программы редактора кода или её замена.
- Может помочь удаление папки Library.
-
Не билдится проект (билд происходит с ошибкой)
- Не выбран или слетел шаблон плагина. (Смотрите раздел “Выбор WebGL шаблона“). Так же может помочь переоткрытие меню Project Settings, перезагрузка Unity, удаление папки WebGLTemplates и её реимпорт. И всё это вместе взятое в разной последовательности… К сожалению, в Unity не очень стабильно работают WebGL шаблоны.
-
Не правильно настроен проект. Вы можете найти рекомендации по настройке и оптимизации проекта в видео плагина и на Trello. (Смотрите раздел “Ссылки”). Настройки проекта находятся в Project Settings → Player. Ниже представлены скриншоты с примером настроек проекта. Красным цветом отмечены - необходимые параметры, жёлтым - рекомендуемые:
-
Крашится игра при тестировании проекта в черновике Яндекса? (Вечная загрузка)
- Не выбран или слетел шаблон плагина. (Смотрите раздел “Выбор WebGL шаблона”)
- Использование методов и данных плагина до инициализации SDK. Необходимо инициализировать данные в соответствии с документацией. (Смотрите раздел “Инициализация”)
- Не правильно настроен проект. (Смотрите рекомендации по настройке проекта)
- Возможно, по какой то причине, вам нужно установить задержку перед инициализацией SDK. За это отвечает параметр SDK Start Delay в настройках плагина InfoYG. Читайте описание данного параметра во всплывающей подсказке при наведении.
- Убедитесь, что билд упакован в zip архив и целостность файлов внутри не нарушена.
- Убедитесь, что Вы делаете билд в правильную папку, что Вы заливаете именно тот билд, что планировали.
- Грузится Ваш старый, не рабочий билд (если таковой имелся). Требуется очистка кеша браузера, что бы запускался свежезалитый билд. Для Яндекс Браузера достаточно просто полностью закрыть браузер и открыть снова.
-
Не отображается шрифт в WebGL билде?
Нельзя использовать дефолтный Unity шрифт, который по умолчанию назначен в компоненте текста. Нужно использовать какой-либо посторонний шрифт, который находится в проекте как файл, и назначить шрифт в компоненты текста.
Или, если Вы используете локализацию от плагина, в настройках InfoYG назначьте default шрифт в массиве шрифтов, тогда плагин сам будет применять данный шрифт в игре.
-
Нет звука на мобильном устройстве?
В игре на Unity звук может не работать в Яндекс браузере, Opera и других. Смотрите в сторону плагина AudioYB. Так же, возможно, звуки будут исправно работать, если использовать FMOD (Требуется не только ассет, но и программа FMOD)
-
Плеер (звуковой) из игры от браузера отображается в нотификациях (в шторке телефона)?
У клипов (звуков) в Unity параметр Load Type должен быть переключён на Decompress On Load.
-
Не отображается ник или аватар игрока?
Должны быть включены данные параметры:
Если при включённых параметрах всё же не отображаются ник и аватар, значит:
- При первом запуске игры в открывшемся окне не было дано разрешение на использование личных данных аккаунта.
- Вышеописанное окно по каким то причинам не было показано и разрешение не было получено.
При любом из вариантов нужно попробовать протестировать черновик через другой аккаунт. Может быть поможет чистка кеша браузера или запуск игры в другом браузере.
-
Нужно использовать Unity ниже 2021 версии?
Для этого Вы можете использовать версию плагина 0.4.4. ****В ней меньше функций, но она рабочая.
-
Как сделать вертикальную ориентацию экрана, изменить прогресс бар?
Найдите файл style.css, в нём прописаны такие данные. В css файле можно сменить соотношение экрана, размеры прогресс бара, его цвет. Более подробную информацию можно найти в поиске по чату **PluginYG** и в интернете.
-
Не работает авто-локализация?
- Необходимо активировать автолокализацию в настройках плагина InfoYG! Для этого имеется соответствующая кнопка.
- Включите разрешение загрузки по протоколу HTTP для Unity Editor в Project Settings → Player → Allow downloads over HTTP.
- Попробуйте сменить в настройках плагина (Domain Auto Localization).
-
Во время игры частично или полностью не переводится текст?
По какой то причине слетели ссылки внутри скрипта Language YG. Чтобы восстановить ссылки, есть метод Reserialize в контекстном меню. Нажмите на три точки на компоненте или на правую кн. мыши. В открывшемся списке снизу будет Reserialize.
Для исправления всех компонентов не сцене такой метод также имеется в инструменте Auto Localization Masse. Так же, можно выделить все компоненты на сцене с помощью поиска в иерархии по полному имени компонента LanguageYG, и сделать Reserialize для всех выделенных объектов.
-
Ошибка: компонент Language YG не найден?
У некоторых появляется ошибка при попытке создания компонента Language YG. Должно помочь перекомпилирование скрипта LanguageYG. Как ни странно, помогает переименовывание данного скрипта в “Language”.
-
На IOS после перезагрузки страницы игра не загружается?
Отключите параметр Data Cashing в Player Settings.
⚙ Общее (читать всё)
Обязательные пункты для функционирования плагина:
- Добавить префаб YandexGame на каждую сцену ****(или воспользоваться Singleton).
- Выбрать WebGL шаблон.
- Заменить лого при загрузке игры на своё (обязательно).
При этом Вы уже сможете загрузить билд Вашей игры в черновик Яндекс Игр, и все будет работать, и даже будет показываться Fullscreen реклама!
Добавление Yandex Game на сцену
Добавить префаб YadexGame на сцену удобнее всего таким образом:
Префаб YandexGame – это объект с одноименными названием и скриптом, который является самым важным скриптом. Через него проходит весь обмен данными между SDK Яндекс Игр. В нём содержатся все методы и поля, которые Вам понадобятся для работы с плагином.
Выбор WebGL шаблона
Выберите шаблон в Project Settings → Player → Resolution and Presentation → WebGL Template
Вы можете заменить изображения (логотип, задний фон), которые показываются на загрузочном экране игры. Для этого замените изображения на своё по пути WebGLTemplates → PluginYG → logo.png, background.png. Имя файла должно остаться неизменным. Так же Вы можете заменить эти файлы в готовом билде игры.
logo.png – логотип
background.png – задний фон (поддерживается начиная с версии плагина 1.1)
-
Возможные проблемы с шаблоном
Если у Вас есть какие либо проблемы с шаблоном, попереключайте разные шаблоны и вернитесь к PluginYG. Важно отметить, что после переключений шаблонов заполненные поля пропадают, и их приходится записывать заново. После обновления проекта до новой версии Unity или обновления плагина, убедитесь в том, что поля не пропали.
Настройки плагина (Info YG)
Настройки плагина находятся в папке WorkingData, файл InfoYG. Также Вы сможете найти его на компоненте YandexGame.
В ходе документации я еще буду возвращаться к настройкам.
В дальнейшем настройки плагина я буду называть только Info YG.
Пространство имен YG
Все скрипты плагина, которые вам нужны, имеют иконку и приписку YG в конце имени. Остальные скрипты - это демонстрационные скрипты.
Все скрипты плагина находятся в пространстве имен YG. Значит Вы можете находить и добавлять компоненты на объект с помощью кнопки Add Component таким образом:
Также это значит: чтобы обратиться к скриптам плагина через Ваши скрипты, нужно подключать библиотеку YG таким образом: using YG;
Работа с компонентом Yandex Game
Все нужные Вам поля и методы есть в скрипте YandexGame.
Через скрипт методы вызываются таким образом пример: YandexGame.SaveProgress()
Для Unity Events есть дублирующие методы с нижнем подчеркиванием перед названием. Скриншот ниже - пример того, как вызвать открытие блока Fullscreen рекламы при нажатии на кнопку в сцене:
? Можно использовать таким образом только методы с нижним подчеркиванием _ .
Определения методов:
Authorization Check
Проверка на авторизацию (производится при старте игры, больше производить проверку не требуется).
-
Buy Payments
Открыть окно для совершения покупки. -
Consume Purchase
Использовать покупку по её id, если будет найдена такая неиспользованная покупка.
-
Consume Purchases
Использовать все оплаченные, но по какой то причине не использованные покупки.
-
Full Screen Show
Вызов полноэкранной рекламы.
-
Get Payments
Обновить информацию о покупках.
-
Init Leaderboard
Инициализация соревновательных таблиц (инициализация производится при старте игры, больше производить инициализацию не требуется).
-
Language Request
Запросить язык (запрос производится при старте игры, больше производить запрос не требуется).
-
URL Yandex Define Domain
Открыть ссылку на игру или аккаунт разработчика. (домен определяется автоматически).
Ссылка получается такого формата: https://yandex.определитьДомен.вашаЗапись
- Пример для записи ссылки на игру: app/189792
- Пример для записи ссылки на аккаунт разработчика: developer?name=JustPlay
-
Any URL
Открыть любую ссылку (Ваша прямая ссылка).
-
Open Auth Dialog
Открыть диалоговое окно авторизации.
-
Prompt Show
Показать диалоговое окно для установления ярлыка на рабочий стол.
-
Requesting Environment Data
Получение дополнительных данных SDK Яндекс Игр (запрос производится при старте игры, больше производить запрос не требуется).
-
Reset Save Progress
Сброс сохранений (работает в Unity Editor и в готовом билде).
-
Review Show
Открыть окно для оценки игры. Принимает перегрузку boolean типа. Поставьте true, чтобы открывалось окно авторизации в случае если пользователь не авторизован.
-
Rewarded Show
Показать видео рекламу за вознаграждение.
-
Sticky Ad Activity
Активировать/деактивировать стики-баннеры.
-
Switch Language
Сменить язык. Укажите в перегрузку string значение языка. Например, “ru”, “en”, или “tr”. После смены языка произойдет сохранение игры.
-
Gameplay Start
Разметка геймплея. Старт игры.
-
Gameplay Stop
Разметка геймплея. Остановка игры.
-
Set Fullscreen
Установить полноэкранный режим в true или false.
Ивенты в компоненте Yandex Game
На скриншоте ниже показаны такие же Unity Events, как и у стандартных кнопок из Unity UI. Вы можете повешать какие-то объекты и выбрать метод, который будет запускаться при срабатывания какого-то из событий. Допустим, Вы можете выдать вознаграждение после просмотра видео рекламы.
Например, событие Open Fullscreen Ad вызывается при открытии Fullscreen рекламы. Если Вы повешаете на него свой скрипт со своим методом, то это будет означать, что Вы подписали свой метод на событие Open Fullscreen Ad. И теперь при каждом открытии Fullscreen рекламы будет вызываться метод, который Вы подписали. Соответственно, если будут подписанный метод/методы на Close Fullscreen Ad, то подписанный метод сработает при закрытии Fullscreen рекламы.
Описание ивентов:
- Resolved Authorization
Вызывается при первом запуске игры после инициализации SDK, если игрок авторизован.
-
Rejected Authorization
Вызывается при первом запуске игры после инициализации SDK, если игрок не авторизован.
-
Open Fullscreen Ad
Вызывается при открытии полноэкранной рекламы.
-
Close Fullscreen Ad
Вызывается при закрытии полноэкранной рекламы.
-
Open Video Ad
Вызывается при открытии видео рекламы за вознаграждение.
-
Close Video Ad
Вызывается при закрытии видео рекламы за вознаграждение.
-
Reward Video Ad
Пользователь посмотрел и закрыл рекламу. Надо дать ему вознаграждение.
-
Error Video Ad
Ошибка при открытии рекламы за вознаграждение.
-
Purchase Success
Вызывается при совершении успешной оплаты покупки.
-
Purchase Failed
Вызывается в случае, если оплата не будет произведена.
Событие может сработать если:
- В консоли разработчика не добавлен товар с таким id.
- Пользователь не авторизовался, передумал и закрыл окно оплаты.
- Истекло отведенное на покупку время, не хватило денег и т. д.
-
Prompt Do
Вызывается после успешной установки пользователем ярлыка на рабочий стол.
-
Review Do
Игрок оставил отзыв.
Game Ready API
Метод из SDK Яндекс при выполнении которого отражается момент, когда игра загрузила все ресурсы и готова к взаимодействию с пользователем.
В Info YG есть галка Auto Game Ready API. Если она включена, то плагин сам выполнит метод Game Ready API сразу после загрузки игры.
Если в Вашей игре имеются свои реализации загрузки игры, например, загрузка первой сцены, то Вам необходимо снять галку Auto Game Ready API и самостоятельно выполнять этот метод, когда игра будет полностью загружена. Выполнение метода: YandexGame.GameReadyAPI();
Разметка геймплея (Gameplay Start/Stop)
Прочитайте документацию разметки геймплея Яндекс Игр, чтобы понять где в игре необходимо вставлять методы старта и остановки игры.
Есть требование выполнять методы при уходе и возвращению на вкладку игры. Также необходимо выполнять методы при просмотре рекламы. Этого делать не нужно! Плагин сделает за Вас.
Выполните метод YandexGame.GameplayStart();
для обозначения старта игры.
Метод YandexGame.GameplayStop();
для остановки игры.
Плагин также запоминает состояние геймплея при уходе с вкладки игры, и по возвращению выполнит метод GameplayStart()
только если при выходе состояние игры было активное.
Плагин не сделает лишних вызовов методов SDK Яндекс Игр старта и остановки. Можете выполнять методы плагина старта и остановки сколько угодно.
Вы можете узнать состояние геймплея с помощью поля YandexGame.isGamePlaying
. Поле будет равно true
, когда игра активна.
Для большего контроля, Вы можете воспользоваться ивентами закрытия и открытия рекламы и ивентами которые срабатывают при закрытии/открытии вкладки с игрой.
Настройки графики от плагина
Готовые настройки графики Graphic Settings YG с переводом с помощью плагина и возможные ошибки при использовании данного скрипта
При запуске демо сцены, возможно, у Вас появятся ошибки. Это связано со скриптом Graphic Settings YG. Если он Вам не нужен, можете просто удалить его или деактивировать объект “Настройки плагина” в сцене. В противном случае, Вы должны настроить его. Для этого укажите количество полей у нужных массивов. Нужные массивы - это массивы с языками, на которые вы будете переводить игру. Количество полей в массивах должно соответствовать количеству графических пресетов в Project Settings → Quality. Для каждого нужного массива заполните поля названиями пресетов графики на определенном языке.
? Инициализация
SDK Яндекс Игр и плагин инициализируется до полного запуска игры. Вы можете пользоваться функциями плагина не дожидаясь пока что-то инициализируется, но Вам всё же может пригодится ивент, который вызывается после инициализации и проверка на инициализацию.
Ивент YandexGame.GetDataEvent
срабатывает после инициализации. Также ивент сработает, если вы вручную вызовете загрузку сохранений или сброс сохранений.
Проверку на инициализацию Вы сможете сделать с помощью boolean поля YandexGame.SDKEnabled
. Равно true
когда плагин инициализирован.
События вкладки игры
При закрытии/открытии вкладки с игрой вызовется ивент:
YandexGame.onVisibilityWindowGame<bool visible>
— требует подписать метод с параметром boolean типа.
visible = true
, если вкладка была открыта, и false
, если вкладка была закрыта.
Также есть ивент открытия вкладки onShowWindowGame
и ивент закрытия вкладки onHideWindowGame
.
И поле YandexGame.isVisibilityWindowGame
— если равно true
, значит вкладка в фокусе.
Пример использования:
using YG;
// Подписываемся на событие открытия/закрытия вкладки игры
private void OnEnable()
{
YandexGame.onVisibilityWindowGame += OnVisibilityWindowGame;
}
// Отписываемся от события открытия/закрытия вкладки игры
private void OnDisable()
{
YandexGame.onVisibilityWindowGame -= OnVisibilityWindowGame;
}
// Метод, который выполнится при открытии/закрытии вкладки игры
void OnVisibilityWindowGame(bool visible)
{
// Ваша логика
}
Второй пример с событиями без параметра:
using YG;
private void OnEnable()
{
YandexGame.onShowWindowGame += OnShowWindowGame; // Подписываемся на открытие
YandexGame.onHideWindowGame+= OnHideWindowGame; // Подписываемся на закрытие
}
private void OnDisable()
{
YandexGame.onShowWindowGame -= OnShowWindowGame; // Отписываемся от открытия
YandexGame.onHideWindowGame-= OnHideWindowGame; // Отписываемся от закрытия
}
void OnShowWindowGame()
{
// Ваша логика при открытии вкладки игры
}
void OnHideWindowGame()
{
// Ваша логика при закрытии вкладки игры
}
Fullscreen методы (Полный экран)
Используйте метод YandexGame.SetFullscreen(bool)
для установки экрана в полноэкранный режим или сброса полного экрана.
Метод SetFullscreen
принимает параметр boolean типа. Если параметр равен true
, то будет установлен полноэкранный режим, false
— сброс полного экрана.
Также есть поле YandexGame.isFullscreen
, с помощью которого вы сможете узнать полный экран сейчас включён или нет.
Метод серверного времени (Server Time)
Используйте метод YandexGame.ServerTime()
для того, чтобы узнать текущее время. Это может пригодиться, например, для выдачи ежедневного вознаграждения.
Метод ServerTime()
возвращает переменную типа long
. Полученное число — это время в миллисекундах, оно будет выглядеть примерно так: 1721201231000.
В Unity Editor будет отображаться фиксированное число для имитирования серверного времени, которое Вы можете установив в настройках плагина InfoYG → Player Info Simulation → Server Time.
? Полноэкранная реклама (Fullscreen Ad)
В Info YG есть настройка Ad When Loading Scene.
По умолчанию Ad When Loading Scene = true — это значит, что показ рекламы будет вызываться при загрузке любой сцены в игре. Значение false — реклама не будет показываться при загрузке сцен.
Независимо от выбора параметра Ad When Loading Scene, по умолчанию первая реклама показывается еще до загрузки игры, это можно настроить с помощью параметра Show First Ad в Info YG.
Для вызова полноэкранной рекламы через скрипт есть метод FullscreenShow()
.
Вы можете подписаться на событие открытия полноэкранной рекламы OpenFullAdEvent()
и на событие закрытия CloseFullAdEvent()
.
Реклама в процессе игры (таймер перед рекламой)
Готовое решение для рекламы в процессе игры. О вариантах отображения рекламы можете почитать здесь.
В настройках плагина InfoYG параметр Ad Display Calls поставьте на Resetting Timer After Any Ad Display.
Найдите префаб YandexGame → Prefabs → ads → Timer Before Ads. Компонент Timer Before Ads YG простой в понимании и имеет всплывающие подсказки.
Объект не синглтон. Скрипт сам открывает таймер, когда рекламу можно показывать, и сам вызывает показ рекламы после отчёта таймера. Последняя цифра или любой ваш объект будет активен пока загружается реклама в течении пары секунд.
Рекомендуется изменить внешний вид интерфейса.
Галочка Pause To_Viewing Ads YG = true означает, что при показе таймера игра будет остановлена с помощью компонента Viewing Ads YG. Вы можете сделать свою реализацию **остановки геймплея с помощью ивента Do Pause**.
Заглушка перед рекламой
Реклама может загружаться с задержкой. Из-за этого может возникнуть ситуация, что
реклама между уровнями показывается после загрузки уровня - получается в момент игры.
Это не соответствует правилам Яндекс Игр.
Если в игре между уровнями происходит загрузка в течении пары секунд, то наверняка
реклама успеет загрузиться до открытия уровня. В ином случае есть смысл остановить игру до показа рекламы. В этом поможет компонент Ad Notification YG.
При использовании заглушки, в настройках плагина InfoYG параметр Ad Display Calls поставьте на Resetting Timer After Any Ad Display.
Возьмите готовый префаб Ad Notification в папке YandexGame → Prefabs → Ads и поместите
на первую сцену, которая будет загружаться в проекте. Объект с компонентом Ad Notification
будет синглтоном. Скрипт имеет пояснения во всплывающих подсказках.
В InfoYG можете поставить симуляцию задержки открытия рекламы для Unity Editor с
помощью параметра Load Ad With Delay Simulation. Так вы сможете протестировать заглушку. Заглушка работает и для рекламы за вознаграждение.
? Реклама за вознаграждение (Reward Ad)
Для вызова видео-рекламы через скрипт есть метод RewVideoShow(int id)
.
Вы можете подписаться на событие открытия видео-рекламы OpenVideoEvent
и на событие закрытия CloseVideoEvent
.
Так же есть событие ErrorVideoEvent
. Подпишитесь на него, если хотите уведомить игроков о неудачном воспроизведении рекламы за вознаграждение.
Используйте событие RewardVideoEvent(int id)
для вознаграждения игрока за просмотр рекламы.
Метод вызова видео рекламы (RewVideoShow
) принимает одно значение типа integer. Это ID рекламы. Он нужен для нескольких видов вознаграждения.
Допустим, у Вас есть вознаграждение “+100 монет” и вознаграждение “+оружие”.
При вызове видео-рекламы за “+100 монет” запишите ID как 1 RewVideoShow(1)
.
А для вознаграждения “+оружие” запишите ID как 2 RewVideoShow(2)
.
В своём скрипте подпишите свой метод вознаграждения на событие RewardVideoEvent
. Подписанный метод должен принимать одно значение типа integer. Это значение и будет ID, которое вернётся тем числом, которое мы записывали при вызове рекламы. И в подписанном методе сделайте проверку. Если ID = 1, то выдаём “+100 монет”. Если ID = 2, то выдаём “+оружие”.
В демо сцене есть простой демо скрипт RewardedAd. Вы можете делать по его примеру, или по этому:
using YG;
// Подписываемся на событие открытия рекламы в OnEnable
private void OnEnable()
{
YandexGame.RewardVideoEvent += Rewarded;
}
// Отписываемся от события открытия рекламы в OnDisable
private void OnDisable()
{
YandexGame.RewardVideoEvent -= Rewarded;
}
// Подписанный метод получения награды
void Rewarded(int id)
{
// Если ID = 1, то выдаём "+100 монет"
if (id == 1)
AddMoney();
// Если ID = 2, то выдаём "+оружие".
else if (id == 2)
AddWeapon();
}
// Метод для вызова видео рекламы
void ExampleOpenRewardAd(int id)
{
// Вызываем метод открытия видео рекламы
YandexGame.RewVideoShow(id);
}
? Пауза игры при просмотре рекламы
По умолчанию на префабе Yandex Game висит скрипт Viewing Ads YG. При просмотре полноэкранной или видео-рекламы данный скрипт ставит на паузу звук, временной масштаб, скрывает курсор в игре или всё вышеперечисленное, на Ваш выбор (за это отвечает опция Pause Type).
Pause Type
Audio Pause — Ставить звук на паузу при просмотре рекламы.
Time Scale Pause — Выставить временную шкалу на 0 (остановить время) при просмотре рекламы.
Cursor Activity — Скрывать курсор.
All — Ставить на паузу и звук и время, скрывать курсор при просмотре рекламы.
Nothing To Control - Не контролировать никакие параметры (подпишите свои методы в опции Custom Events).
Pause Method
- Remember Previous State — Ставить паузу при открытии рекламы. После закрытия рекламы звук и/или временная шкала придут в изначальное значение (до открытия рекламы).
-
Custom State — Укажите свои значения, которые будут выставляться при открытии и закрытии рекламы.
-
Opening AD Values — Установить значения при открытии рекламы.
Time Scale — Значение временной шкалы при открытии рекламы.
-
Closing AD Values — Установить значения при закрытии рекламы.
Time Scale — Значение временной шкалы при закрытии рекламы.
Audio Pause — Значение аудио паузы при закрытии рекламы.
Cursor Visible — Показать или скрыть курсор при закрытии рекламы?
Cursor Lock Mode — Выберите мод блокировки курсора при закрытии рекламы.
-
-
Custom Events — Ивенты для кастомных методов.
Open Ad — Подпишите свой метод, который будет выполняться при открытии полноэкранной рекламы или рекламы за вознаграждение.
Close Ad — Подпишите свой метод, который будет выполняться при закрытии полноэкранной рекламы или рекламы за вознаграждение.
Do Close Void On Awake — Выполнить метод закрытия рекламы (Closing AD Values в Viewing Ads YG) в методе Awake (то есть при старте сцены).
Это позволит не прописывать события вроде аудио пауза = false или timeScale = 1 в ваших скриптах в методах Start.
Простой способ настройки Viewing Ads YG
- Не прописывайте в своих скриптах в методах в Start, Awake или On Enable параметры такие как:
AudioListener.pause; ****Time.timeScale; Cursor.visible; Cursor.lockState;
- В компоненте Viewing Ads YG установите параметр Pause Method = Remember Previous State.
- Поставьте галку Awake Set Values.
- Настройте параметры при старте сцены в Awake Values как вам нужно.
⚡ Sticky-баннер
Чтобы включить показ sticky-баннера:
- Откройте консоль разработчика и перейдите на вкладку Черновик.
-
В блоке Sticky баннеры настройте отображение баннеров:
- Для мобильных устройств — в поле Sticky-баннер в портретной ориентации выберите расположение Внизу или Вверху.
- Для планшетов — в поле Sticky-баннер в альбомной ориентации выберите расположение Внизу или Вверху.
- Для компьютеров — включите опцию Sticky-баннер на десктопе. Баннер будет показываться справа.
По умолчанию sticky-баннер появляется при запуске игры и отображается всю сессию. Чтобы настроить момент показа баннера:
- В блоке Sticky баннеры включите опцию Использовать API для показа sticky-баннера.
- Используйте API управления показом Sticky баннера.
Управление показом Sticky баннера
Активируйте или деактивируйте Sticky баннер с помощью метода:
YandexGame.StickyAdActivity(bool activity)
Перегрузка activity задаёт активность Sticky баннера:
StickyAdActivity(true)
— включить Sticky баннер;StickyAdActivity(false)
— выключить Sticky баннер.
? Все данные
Вы можете получить имя игрока, его аватар, девайс пользователя и т.д.
Большинство данных берутся напрямую из класса YandexGame
. Другие объекты и параметры SDK в отдельном классе YandexGame.EnvironmentData
. Также есть класс для сохранений игры и класс для внутриигровых покупок.
-
YandexGame.SDKEnabled
тип boolean
true
— Если SDK загрузился;false
— Если SDK не загрузился.
-
YandexGame.lang
тип stringify
- Возвращает язык сортируя его из выбранных языков в настройках плагина InfoYG.
-
YandexGame.auth
тип boolean
true
— Если пользователь авторизован;false
— Если пользователь не авторизован.
-
YandexGame.playerName
тип stringify
- “имя игрока” — Если игрок авторизован;
“anonymous”
— Если игрок не авторизован.
-
YandexGame.playerId
тип stringify
- ID игрока
-
YandexGame.adBlock
тип boolean
- Активность функции Check AdBlock
-
YandexGame.playerPhoto
тип stringify
- Ссылка изображения аватарки игрока
-
YandexGame.photoSize
тип stringify
- Размер подкачанного изображения пользователя. Возвращает значение параметра Player Photo Size, которое вы выбираете в InfoYG.
-
YandexGame.nowAdsShow
тип boolean
true
— Полноэкранная или видео реклама открыта в данный момент.false
— Полноэкранная или видео реклама закрыта в данный момент.
-
YandexGame.nowFullAd
тип boolean
true
— Полноэкранная реклама открыта в данный момент.false
— Полноэкранная реклама закрыта в данный момент.
-
YandexGame.nowVideoAd
тип boolean
true
— Видео реклама за вознаграждение открыта в данный момент.false
— Видео реклама за вознаграждение закрыта в данный момент.
-
YandexGame.isFullscreen
тип boolean
true
— Игра открыта в полноэкранном режиме.false
— Игра не развёрнута на полный экран.
-
YandexGame.isVisibilityWindowGame
тип boolean
true
— Вкладка игры в фокусе.false
— Вкладка игры не активна.
-
YandexGame.EnvironmentData.language
тип stringify
- Язык. Поддерживаемые языки вы можете посмотреть в официальной документации Яндекс Игр.
-
YandexGame.EnvironmentData.domain
тип stringify
- Домен. Поддерживаемые домены вы можете посмотреть в официальной документации Яндекс Игр.
-
YandexGame.EnvironmentData.deviceType
тип stringify
Устройство пользователя. Возвращает одно из значений:
"desktop"
(компьютер)"mobile"
(мобильное устройство)"tablet"
(планшет)"tv"
(телевизор)
-
YandexGame.EnvironmentData.isMobile
тип boolean
true
— мобильное устройство;false
— иное устройство.
-
YandexGame.EnvironmentData.isDesktop
тип boolean
true
— компьютер;false
— иное устройство.
-
YandexGame.EnvironmentData.isTablet
тип boolean
true
— планшет;false
— иное устройство.
-
YandexGame.EnvironmentData.isTV
тип boolean
true
— телевизор;false
— иное устройство.
-
YandexGame.EnvironmentData.appID
тип stringify
- ID игры
-
YandexGame.EnvironmentData.browserLang
тип stringify
- Язык браузера
-
YandexGame.EnvironmentData.payload
тип stringify
- О параметре payload читайте в разделе Deep Linking
-
YandexGame.EnvironmentData.promptCanShow
тип boolean
- Используется для того, чтобы убедиться, что ярлык можно добавить.
-
YandexGame.EnvironmentData.reviewCanShow
тип boolean
- Используется для того, чтобы убедиться, что отзыв можно оставить.
-
YandexGame.EnvironmentData.platform
тип stringify
- Платформа, на которой запущена игра.
- Какие платформы могут быть смотрите в других источниках.
-
YandexGame.EnvironmentData.browse
тип stringify
- Браузер, в котором запущена игра.
Список браузеров:
Yandex
Opera
Firefox
IE
Edge
Chrome
Safari
Other
-
YandexGame.purchases
тип Purchase[]
- Все товары (информация о товарах).
-
YandexGame.Purchase.id
тип stringify
- Идентификатор товара, который Вы записывали при создании товара в консоли разработчика.
-
YandexGame.Purchase.title
тип boolean
- Название товара.
-
YandexGame.Purchase.description
тип stringify
- Описание товара.
-
YandexGame.Purchase.imageURIimageURI
тип stringify
- URL изображения товара.
-
YandexGame.Purchase.price
тип stringify
- Cтоимость товара в формате
<цена> <код валюты>
.
- Cтоимость товара в формате
-
YandexGame.Purchase.priceValue
тип stringify
- Cтоимость товара в формате
<цена>
.
- Cтоимость товара в формате
-
YandexGame.Purchase.priceCurrencyCode
тип stringify
- Код валюты.
-
YandexGame.Purchase.currencyImageURL
тип stringify
- Адрес иконки валюты.
-
YandexGame.Purchase.consumed
тип boolean
- Использована ли покупка
true
— использована;false
— не использована.
-
YandexGame.PayingStatus
Четыре возможных значения, зависящих от частоты и объема покупок пользователя:
-
paying
Пользователь купил портальную валюту на сумму более 500 рублей за последний месяц.
-
partially_paying
У пользователя была хотя бы одна покупка портальной валюты реальными деньгами за последний год.
-
not_paying
Пользователь не делал покупок портальной валюты реальными деньгами за последний год.
-
unknown
Пользователь не из РФ или он не разрешил передачу такой информации разработчику. В плагине unknown ещё означает — неавторизованный.
-
? Сохранения
В плагине предусмотрено 3 вида сохранений:
- Для тестирования в Unity Editor — при разработке игры в Unity, данные сохраняются в файл SavesEditorYG.json ****(подробнее ниже).
- Облачные сохранения — сохранения на облако Яндекса. Для работы облачных сохранений необходимо в черновике поставить галочку напротив “Игра использует облачные сохранения”.
- Локальные сохранения — если данные не могут сохраниться или загрузиться из облака Яндекс Игр по каким то причинам, то используются локальные сохранения (Local Storage). Если Вы хотите использовать только локальные сохранения, отключите облачные сохранения в настройках плагина InfoYG → параметр Save Cloud.
Все виды сохранений работают автоматически, Вам нужно только сделать следующие действия:
- Создать свои данные для сохранений в отдельном скрипте “savesData”.
- В Вашем скрипте присвоить созданным Вами сохранениям в классе “savesData” - значения, которые требуется сохранить.
- Выполнить метод сохранения.
- Загрузка сохранений происходит следующим образом: берёте из класса “savesData” значения нужных данных и делаете с ними что требуется. Если нужно получать данные сразу при старте игры, то это нужно делать после инициализации SDK, т.к. сохранённый ранее прогресс игрока загружается в класс “savesData” - после инициализации SDK.
Создание своих данных для сохранения
- Откройте скрипт SavesYG, **расположенный по пути YandexGame → WorkingData.**
- Под комментарием
// Ваши сохранения
уже есть некоторые поля. Это поля для демо-сцены, вы можете их удалить. - Запишите свои поля. Вы можете задать им какие-то значения, тогда эти значения будут дефолтными, и при первой загрузке игры данные буду равные дефолтным значениям.
Загрузка сохранений
Загрузка сохранений происходит автоматически после инициализации SDK. Класс с сохранениями статический. Это значит, что даже если в игре переключится сцена, данные не изменятся. Поэтому Вам никогда не нужно будет делать метод загрузки (LoadProgress
).
Чтобы получить сохранения игры, просто делайте это как с обычными данными плагина через скрипт YandexGame и его статический класс savesData: YandexGame.savesData.вашеПоле;
Сохранение
Для сохранение игрового прогресса есть метод YandexGame.SaveProgress();
Но прежде чем сохранить данные, нужно записать их в класс savesData
.
В демо-сцене вы найдете хороший скрипт для примера “SaverTest”. Вот еще пример:
// Подписываемся на событие GetDataEvent в OnEnable
private void OnEnable()
{
YandexGame.GetDataEvent += GetLoad;
}
// Отписываемся от события GetDataEvent в OnDisable
private void OnDisable()
{
YandexGame.GetDataEvent -= GetLoad;
}
private void Start()
{
// Проверяем запустился ли плагин
if (YandexGame.SDKEnabled == true)
{
// Если запустился, то выполняем Ваш метод для загрузки
GetLoad();
// Если плагин еще не прогрузился, то метод не выполнится в методе Start,
// но он запустится при вызове события GetDataEvent, после прогрузки плагина
}
}
// Ваш метод для загрузки, который будет запускаться в старте
public void GetLoad()
{
// Получаем данные из плагина и делаем с ними что хотим
// Например, мы хотил записать в компонент UI.Text сколько у игрока монет:
textMoney.text = YandexGame.savesData.money.ToString();
}
// Допустим, это Ваш метод для сохранения
public void MySave()
{
// Записываем данные в плагин
// Например, мы хотил сохранить количество монет игрока:
YandexGame.savesData.money = money;
// Теперь остаётся сохранить данные
YandexGame.SaveProgress();
}
Сброс сохранений
Файл сохранений для тестирования игры в Unity сохраняется в папке YandexGame → WorkingData → Editor. Вы можете сбросить сохранения удалив файл SavesEditorYG.json.
Есть метод для сброса сохранений YandexGame.ResetSaveProgress()
. Он не удаляет файл SavesEditorYG.json, он сбрасывает все сохранения до дефолтных значений. Также данный метод сбрасывает сохранения и в готовом билде игры.
После сброса, сохранение не происходит. Если Вы хотите, чтобы после сброса данные сразу же сохранились в дефолтном состоянии - выполните метод сохранения YandexGame.SaveProgress();
Сохранение массива массивов
Для сохранения массива массивов необходимо использовать класс JsonConvert из библиотеки JsonNet. Для этого есть возможность переключаться между JsonUtility и JsonConvert.
Недостаток класса JsonConvert в том, что при его использовании в билд проекта добавляется библиотека JsonNet и конечный вес игры увеличивается на ~2мб.
Преимущество класса JsonConvert — сохранение массива в массиве. Используйте JsonUtility, если Вам не нужно сохранять массив в массиве, для этого ничего не требуется делать, JsonUtility используется по умолчанию.
Чтобы использовать JsonConvert: нажмите соответствующую кнопку активации в настройках плагина Info YG.
? Лидерборды
Создание таблицы в консоли разработчика
Перейдите в раздел Лидерборды и запишите Техническое название соревновательной таблицы. Локализация наименования нам не нужна, а остальные опции имеют пояснения.
Запись рекорда в соревновательную таблицу
Это делается с помощью метода:
YandexGame.NewLeaderboardScores(string "техническое название таблицы", int новый рекорд);
-
Дополнительные опции при работе с кодом
После инициализации лидербордов поле boolean типа
YandexGame.initializedLB
будет равно true.Есть метод
YandexGame.GetLeaderboard
, он имеет параметры необходимые для заполнения.После выполнения метода
GetLeaderboard
вызовется событиеYandexGame.onGetLeaderboard
. Оно передаёт класс LBData содержащий следующую информацию о лидерборде:-
technoName
тип stringify
- Техническое название таблицы
-
entries
тип stringify
- Описание таблицы в тексте.
Это тот текст, который записывается в таблицу при выборе простого режима (Advanced = false).
-
isDefault
тип boolean
- Является ли основным лидербордом
-
isInvertSortOrder
тип stringify
- Сортировка
false = сортировка по убыванию
true = сортировка по возрастанию
-
decimalOffset
тип integer
- Размер десятичной части счёта
Это число определяет, сколько знаков
из целого числа счета должны быть
отображены после запятой.Например, значение 5712
в лидерборде при размере
десятичной части равном 2 будет
отображено как 57. 12. -
type
тип stringify
- Тип таблицы: numeric или time
-
thisPlayer
класс LBThisPlayerData
Это информация о пользователе аккаунта (игрока играющего в игру)
Имеет два параметра:
- rank
- score
-
players
класс LBPlayerData[]
- Список игроков.
Массив игроков в таблице лидеров. Элементы массива содержат информацию о пользователе.
Класс LBPlayerData содержит следующую информацию о игроке:
-
rank
тип integer
- Ранк игрока (позиция в таблице).
-
name
тип stringify
- Ник пользователя.
-
score
тип integer
- Рекорд пользователя
-
photo
тип stringify
- Ссылка на аватар пользователя.
-
uniqueID
тип stringify
- Уникальный идентификатор пользователя.
Обратите внимания. Вы можете получить ранк и рекорд пользователя из
thisPlayer
. Но это не официальные данные. Они получены путём поиска пользователя из спискаplayers
по уникальному id игрока. -
При этом у Вас уже будет существовать соревновательная таблица, которая будет отображаться на странице Вашей игры таким образом:
Создание таблицы в Unity
Чтобы лидерборды работали необходимо включить параметры Scopes и Leaderboard Enable в Info YG.
Отображением таблицы занимается скрипт Leaderboard YG. Все его опции имеют всплывающие подсказки. Обязательно заполните параметр Name LB — это техническое название таблицы, которое мы записывали в консоли разработчика.
В папке YandexGame → Prefabs → Leaderboards расположены примеры таблиц, ****возьмите их за основу.
-
Простой вариант отображения таблицы
Для режима простого отображения рекордов достаточно указать в компоненте Leaderboard YG ссылку на компонент Text в опции Entries Text, галочка Advanced должна быть отключена для простой таблицы. И скрипт сам будет записывать в него данные таблицы.
-
Продвинутый (Advanced) вариант отображения таблицы
Отдельными блоками отображает всех игроков, их рейтинг, аватар, ник, рекорд. Позволяет выделить топ игроков и пользователя аккаунта.
- Включите галочку Advanced.
- Entries Text заполнять необязательно.
- Укажите Root Spawn Players Data — это объект в иерархии которого будут создаваться объекты с компонентом LB Player Data YG. Каждый такой объект с компонентом LB Player Data YG ****— это игрок в таблице (информация о пользователе).
- Укажите Player Data Prefab — это должен быть префаб с компонентом LB Player Data YG. Создайте такой префаб по аналогии с готовыми примерами. Поля в LB Player Data заполняются по желанию.
У скрипта Leaderboard YG есть следующие публичные методы:
-
UpdateLB()
Обновление таблицы.
-
NewScore(int score)
Запись нового рекорда.
-
NewScoreTimeConvert(float score)
Запись нового рекорда и конвертация в Time тип.
Симуляция отображения таблицы в Unity Editor
Для отображения данных в таблице в Unity Editor, необходимо создать эти данные следующим образом:
Info YG → Leaderboards → Leaderboard Simulation — это массив таблиц для симуляции. Элемент этого массива — это лидерборд со всеми параметрами, и все их настраивать необязательно. Не все данные повлияют на симуляцию. Все данные отображаются, потому что используют тот же класс, в котором хранится информация о реальной таблице. Благодаря этому можно посмотреть какие реальные данные существуют.
- Создайте таблицу в массиве или измените уже имеющуюся.
- Запишите Techno Name.
- Entries — будет работать для не продвинутой (no Advanced) таблицы.
- Is Invert Sort Order — можете установить порядок расстановки по возрастанию или по убыванию. Также, как настраиваете в консоли ЯИ.
- Для отображения игроков в таблице создайте их, каждый элемент массива это игрок отображающийся в таблице. Заполните данные игрока по своему усмотрению.
Rank — позиция в таблице (в симуляции выставляется автоматически).
Score — рекорд игрока. По рекорду будет выставляться расстановка игроков.
Name — имя игрока. Если назвать anonymous, то будет симуляция анонимного игрока.
Photo — это ссылка на скачивание изображения для аватарки.
Unique ID может пригодиться для выделения пользователя в таблице:
Для этого Unique ID должен совпадать с одноимённым параметром в Info YG → Basic settings → Scopes → Player Info Simulation → Unique ID.
Time тип
- В консоли разработчика выберите Time тип лидерборда.
- Скорее всего, на первых местах таблицы Вы захотите видеть рекорд игрока, который прошёл уровень за наименьшее время (быстрее всех). Для этого установите параметр Направление сортировки → Сортировка по возрастанию.
- Размер десятичной части счета оставьте на 0.
- В компоненте Leaderboard YG поставьте галочку напротив параметра Time Type Converter.
- При записи нового рекорда вместо метода
NewLeaderboardScores
используйте методNewLBScoreTimeConvert(string "техническое название таблицы", float новый рекорд);
Новый рекорд вы передаёте в типе float, число может выглядеть, например, так: 180,135.
Рекорд записывается в формате «секунды». Например, рекорд «3 минуты» должен записываться как число «180».
-
Сейчас имеется баг с целым числом!
Когда вы тестируете лидерборд, вы можете передавать целое число, например 180. Целое число будет некорректным. Для конвертации, такое целое число должно выглядеть так: 180000.
В реальной игре вероятность выпадания целого числа ничтожно мала.
Просто, тестируйте с числами после плавающей точки (например 180,1). Или умножайте целые числа на 1000. В версиях плагина 2.0+ это будет исправлено.
Код таймера в вашей игре может выглядеть следующим образом:
using YG;
class Class: MonoBehaviour
{
float timer;
void Update()
{
timer += Time.deltaTime;
}
// Пример записи нового рекорда Time типа
void NewRecordExample()
{
YandexGame.NewLBScoreTimeConvert("tableName", timer);
}
}
Дополнительные опции при работе с кодом
После инициализации лидербордов поле boolean типа YandexGame.initializedLB
будет равно true.
Есть метод получения данных лидерборда YandexGame.GetLeaderboard
, он имеет параметры необходимые для заполнения.
После выполнения метода GetLeaderboard
вызовется событие YandexGame.onGetLeaderboard
.
СОбытие передаёт класс LBData содержащий следующую информацию о лидерборде:
-
technoName
тип stringify
- Техническое название таблицы
-
entries
тип stringify
- Описание таблицы в тексте.
Это тот текст, который записывается в таблицу при выборе простого режима (Advanced = false).
-
isDefault
тип boolean
- Является ли основным лидербордом
-
isInvertSortOrder
тип stringify
- Сортировка
false = сортировка по убыванию
true = сортировка по возрастанию
-
decimalOffset
тип integer
- Размер десятичной части счёта
Это число определяет, сколько знаков
из целого числа счета должны быть
отображены после запятой.Например, значение 5712
в лидерборде при размере
десятичной части равном 2 будет
отображено как 57. 12. -
type
тип stringify
- Тип таблицы: numeric или time
-
thisPlayer
класс LBThisPlayerData
Это информация о пользователе аккаунта (игрока играющего в игру)
Имеет два параметра:
- rank
- score
-
players
класс LBPlayerData[]
- Список игроков.
Массив игроков в таблице лидеров. Элементы массива содержат информацию о пользователе.
Класс LBPlayerData содержит следующую информацию о игроке:
-
rank
тип integer
- Ранк игрока (позиция в таблице).
-
name
тип stringify
- Ник пользователя.
-
score
тип integer
- Рекорд пользователя
-
photo
тип stringify
- Ссылка на аватар пользователя.
-
uniqueID
тип stringify
- Уникальный идентификатор пользователя.
Обратите внимания. Вы можете получить ранк и рекорд пользователя из thisPlayer
. Но это не официальные данные. Они получены путём поиска пользователя из списка players
по уникальному id игрока.
Пример:
string technoName = "myLeaderboard";
int rankPlayer;
// Получение данных лидерборда
public void GetLeaderboard()
{
YandexGame.GetLeaderboard(technoName, 10, 3, 3, "small");
// Последний параметр photoSizeLB может быть "nonePhoto", "small", "medium" и "large"
}
// Подписываемся и отписываемся от ивента получения данных
private void OnEnable()
{
YandexGame.onGetLeaderboard += OnGetLeaderboard;
}
private void OnDisable()
{
YandexGame.onGetLeaderboard -= OnGetLeaderboard;
}
// Метод получающий данные
private void OnGetLeaderboard(LBData lb)
{
// Сверяем имя лидерборда
if (lb.technoName == technoName)
{
// Получаем данные. В данном случае, получаем ранк пользователя.
rankPlayer = lb.thisPlayer.rank;
}
}
? Локализация
Плагин поставляется с инструментами локализации. Ниже будет описание работы с ними. Если же Вам нужно только брать язык из SDK Яндекс Игр, используйте одно из двух полей:
-
YandexGame.EnvironmentData.language
тип stringify
- Язык. Поддерживаемые языки вы можете посмотреть в официальной документации Яндекс Игр.
-
YandexGame.lang
тип stringify
- Возвращает язык сортируя его из выбранных языков в настройках плагина InfoYG.
Зайдите в Info YG и выберите языки, на которые будете переводить игру в опции Languages.
Настройки локализации в Info YG:
- Параметр Calling Language Check.
- First Launch Only — язык будет проверяться только при первом запуске игры, и сохраняться. Последующие запуски игры будут с языком, который выбрался при первом запуске.
- Every Game Launch — язык будет меняться при каждом запуске игры.
- Do Not Change Language Startup — Язык не будет меняться при запуске игры.
-
Параметр Translate Method — это метод работы с локализацией. Выбор метода не будет влиять на локализацию в готовой игре. Он нужен для работы в Unity Editor.
-
Auto Localization
Auto Localization Даст возможность автоматически переводить текст через API Google Translate.
-
Проблемы авто-локализации
У Google Translate есть ограничения количество символов. Может помочь смена домена в настройках плагина.
Перевод может не выполняться дальше первой точки в тексте.
-
Инструмент для перевода всей сцены
Auto Localization Masse. Вы найдете его в верхней вкладке YG → Localization.
-
-
Manual
Перевод вручную. С Manual методом интерфейс компонента для перевода упрощается.
-
CSVFile
С CSVFile ****методом Вы сможете хранить все переводы по ключам в отдельном csv файле, который открывается через такие программы, как Office Excel или Google Sheets. Так обычно делают, чтобы отправить csv файл в компанию для перевода приложений.
-
Работа с методом сохранения в csv файл.
При выборе метода CSVFile, в компоненте LanguageYG появятся кнопки импорта и экспорта перевода.
При экспорте, если csv файла не существует, то он создастся в корневой папке Resources. Если файл существует, то при нажатии на кнопку экспорт в LanguageYG компоненте, старые переводы ключа, который записан в поле ID перезапишется на переводы из компонента LanguageYG.
Есть еще инструмент для импорта и экспорта переводов всей сцены. Он находится в верхней вкладке YG → Localization → Import\Export Language Translations. Он не будет перезаписывать старые ключи новыми, если такие уже существуют. Он запишет только те ключи, которых еще нет в csv файле. Для того, чтобы по новой сохранить весь перевод, удалите csv файл или измените его название. Или запишите новое название для файла в InfoYG.
-
-
За перевод текста отвечает компонент Language YG. Он должен висеть на объекте с компонентом Text или с компонентами Text Mesh Pro. Если компонент текста на объекте не будет найден Language YG предложит их создать.
Шрифты
В Info YG есть массивы шрифтов для каждого языка. Если вы перетяните отдельный шрифт, допустим, в нулевой элемент массива английского языка, то в игре при английской локализации шрифты заменятся на тот, что вы указали. Вы также можете закинуть шрифт, допустим, в первый элемент массива. Тогда, если в компоненте Languages YG вы укажите поле Font Index равное одному, то для этого текста будет ставиться шрифт из первого элемента массива.
Также, в компоненте Languages YG есть поле Unique Font (уникальный шрифт). Если вы перетащите туда какой-либо шрифт, то данный текст всегда будет грузиться с указанным шрифтом.
Также есть инструмент по замене шрифтов на всей сцене на дефолтный. Он находится в верхней вкладке YG → Localization → Font Default Masse.
В Info YG массив Font Size Correct поможет задать корректировку для каждого шрифта.
Обратите внимание на компонент Lang YG Additional Text — Добавляет текст к переведенному тексту. Через код можно менять поле Additional Text и всё корректно применится.
? Внутриигровые покупки
Прочитайте раздел документации Я.Игр “Внутриигровые покупки”.
После добавления товаров в каталог покупок можно приступать к настройке покупок в Unity.
Симуляция отображения покупок в Unity Editor
Чтобы плагин симулировал получение каталога покупок в Unity Editor, настройте эту симуляцию в Info YG → Purchases→ Purchases Simulation.
Purchases Simulation — это массив покупок для симуляции. Создайте или измените элементы массива и их параметры.
Готовое решение
Самый простой способ — использовать готовый префаб Payments Catalog из папки YandexGame → Prefabs → Payments. Он автоматически отображает каталог всех покупок с выводом информации и кнопкой для совершения покупки.
Вам понадобится обрабатывать покупки (выдать вознаграждение). В этом может помочь скрипт Receiving Purchase Example. Он имеет Unity Events (ивенты что в инспекторе): закрытия окна покупки, и ивент успешной покупки. Это годится, например, для вывода уведомления о успешности покупки. Но кроме этого необходимо произвести саму выдачу покупки, в большинстве случаев это будет происходить внутри кода. В скрипте Receiving Purchase Example есть такой пример:
// Подписываемся на ивенты успешной/неуспешной покупки
private void OnEnable()
{
YandexGame.PurchaseSuccessEvent += SuccessPurchased;
YandexGame.PurchaseFailedEvent += FailedPurchased; // Необязательно
}
private void OnDisable()
{
YandexGame.PurchaseSuccessEvent -= SuccessPurchased;
YandexGame.PurchaseFailedEvent -= FailedPurchased; // Необязательно
}
// Покупка успешно совершена, выдаём товар
void SuccessPurchased(string id)
{
// Ваш код для обработки покупки. Например:
if (id == "50")
YandexGame.savesData.money += 50;
else if (id == "250")
YandexGame.savesData.money += 250;
else if (id == "1500")
YandexGame.savesData.money += 1500;
YandexGame.SaveProgress();
}
// Покупка не была произведена
void FailedPurchased(string id)
{
// Например, можно открыть уведомление о неуспешности покупки.
}
Покупка может быть неудачной, если:
- В консоли разработчика не добавлен товар с таким id.
- Пользователь не авторизовался, передумал и закрыл окно оплаты.
- Истекло отведенное на покупку время, не хватило денег и т. д.
Обработка покупок
Во время оплаты, если были проблемы вроде потери соединения с интернетом, может возникнуть ситуация, что информация о произведении покупки “не дойдёт до игры” и оплаченный товар не применится в игре.
В нормальной ситуации, после “выдачи покупки в игре” выполняется метод подтверждения покупки (использования/consume). Но если этого не происходит неиспользованная, но оплаченная покупка остаётся в массиве неиспользованных покупок в SDK Я.Игр. По этому, при запуске игры необходимо проверять этот массив и применить неиспользованные покупки.
Для применения всех неиспользованных покупок есть скрипт Consume Purchases YG. По умолчанию данный компонент есть на префабе Payments Catalog.
Consume Purchases YG - простой скрипт, который после инициализации SDK один раз вызывает метод YandexGame.ConsumePurchases();
.
Метод ConsumePurchases()
применяет все необработанные покупки, но как? - вызывает вышерассмотренный ивент YandexGame.PurchaseSuccessEvent
с передачей ID необработанной покупки. Это значит, что в момент выполнения ConsumePurchases()
в игре скрипт получения товара должен подхватить обработку покупки.
Если по простому - при запуске игры на сцене должны располагаться скрипт Consume Purchases YG и скрипт выдачи товара, например Receiving Purchase на не деактивированных объектах желательно. Если в проекте что то по сложнее, сделайте свою реализацию применения необработанных покупок с помощью метода ConsumePurchases()
.
-
Как протестировать обработку неиспользованных покупок?
После совершения покупки не нажимайте на кнопку хорошо:
Перезагрузите страницу. После загрузки игры должен произойти ивент получения товара.
Компоненты покупок
-
Подробнее о компонентах покупок
Для отображения покупок и контроля над ними используется два компонента: Payments Catalog YG и Purchase YG, или отдельно только Purchase YG:
-
Purchase YG
Purchase YG — это контейнер для информации о покупке. В нем содержатся ссылки на текст названия покупки, её описания, цену и иконку. Поля необязательны для заполнения. Purchase YG призван отображать информацию о покупке. Но сама по себе в нём информация не обновляется. Если вам не нужно получение информации о покупке из SDK Я.Игр, вы можете оформить покупку по своему усмотрению и всё же воспользоваться компонентом Purchase YG для вызова окна совершения покупки. Для этого достаточно указать Id в классе Data и выполнять метод
BuyPurchase()
(можно через Unity Button). -
Catalog YG
Catalog YG — обновляет информацию в компонентах Purchase YG.
-
1 вариант — автоматическое отображение всего каталога покупок.
Поставьте галочку Spawn Purchases.
Заполните поле Root Spawn Purchases объектом, внутри иерархии которого будут создаваться префабы из поля Purchase Prefab.
Требуется указать ссылку на префаб с компонентом Purchase YG. Теперь каталог товаров будет автоматически создаваться при обновлении каталога.
Когда будет обновляться каталог **— можно настроить в опции Update List Method**.
-
2 вариант — создать список покупок.
Полезно, если требуется отображение не полного каталога товаров или ручное заполнение информации о покупках.
галочку Spawn Purchases.
Заполните список Purchases объектами с компонентом Purchase YG. В компонентах покупок требуется указать Id. По Id будет производиться загрузка информации.
Когда будет производиться загрузка информации — можно настроить в опции Update List Method.
-
Как исключить показ определённых покупок, например, если покупка одноразовая и нужно её скрыть, если она уже приобретена.
Готовой реализации нет, т.к. реализация может быть совсем разной и может зависеть от определённых сохранений.
Но здесь будет дана подсказка:
После обновления каталога удалим нежелательную покупку из списка.
В скрипте Catalog YG есть Unity Event On Update Purchases List. Подпишите на него метод, в котором возьмите список Purchases из скрипта Catalog YG и удалите из списка нежелательные покупки с помощью поиска по Id. Например:PaymentsCatalogYG catalog; for (int i = 0; i < catalog.purchases.Length; i++) { if (catalog.purchases[i].data.id == deletePurchaseID) { Destroy(catalog.purchases[i].gameObject); } }
-
-
Работа с кодом
-
Подробнее о работе с кодом
После инициализации SDK выполняется метод
YandexGame.GetPayments
— метод получает информацию о покупках и “передаёт в игру”.После “передачи информации” срабатывает ивент
YandexGame.GetPaymentsEvent
.Метод
YandexGame.GetPayments
выполняется плагином автоматически после инициализации SDK и больше не требуется выполнение данного метода.В
YandexGame
есть поле purchases — это массив покупок. Элемент массива — это класс Purchase. Он содержит следующую информацию о товаре:-
id
тип stringify
- Идентификатор товара, который Вы записывали при создании товара в консоли разработчика.
-
title
тип boolean
- Название товара.
-
description
тип stringify
- Описание товара.
-
imageURIimageURI
тип stringify
- URL изображения товара.
-
price
тип stringify
- Cтоимость товара в формате
<цена> <код валюты>
.
- Cтоимость товара в формате
-
priceValue
тип stringify
- Cтоимость товара в формате
<цена>
.
- Cтоимость товара в формате
-
priceCurrencyCode
тип stringify
- Код валюты.
-
currencyImageURL
тип stringify
- Адрес иконки валюты.
-
consumed
тип boolean
- Использована ли покупка
true
— использована;false
— не использована.
Есть метод
YandexGame.PurchaseByID(string id)
возвращающий информацию о товаре (класс Purchase). Он ищет товар в списке purchases по id, который требуется указать в аргументе.Метод
YandexGame.ConsumePurchaseByID(string id)
— обработка (использование) определённой покупки по id.Метод
YandexGame.ConsumePurchases
— обработка (использование) всех необработанных покупок.Метод
YandexGame.BuyPayments(string id)
— открыть окно, в котором можно совершить покупку.Ивент
YandexGame.PurchaseSuccessEvent<string id>
— покупка успешно совершена.Ивент
YandexGame.PurchaseFailedEvent<string id>
— покупка не была совершена.Поле
YandexGame.PayingStatus
— имеет четыре возможных значения, зависящих от частоты и объема покупок пользователя:-
paying
Пользователь купил портальную валюту на сумму более 500 рублей за последний месяц.
-
partially_paying
У пользователя была хотя бы одна покупка портальной валюты реальными деньгами за последний год.
-
not_paying
Пользователь не делал покупок портальной валюты реальными деньгами за последний год.
-
unknown
Пользователь не из РФ или он не разрешил передачу такой информации разработчику. В плагине unknown ещё означает — неавторизованный.
-
? Deep Linking
Вы можете передавать какое-либо значение в игру через ссылку с помощью гипер-оператора.
Таким образом можно, например, открывать конкретный уровень в игре, перейдя по такой ссылке, давать бонус в игре при переходе по ссылке, передавать значение для тестирования игры.
Как передать значение в игру
Например, адрес Вашей игры: https://yandex.ru/games/app/012345
Допишите к адресу приписку: ?payload=
После равно напишите значение, которое хотите передать в игру. Допустим, значение будет: debug123
Мы получили ссылку: https://yandex.ru/games/app/012345?payload=debug123
Теперь мы можем получать значение “debug123” в игре и делать с ним что захотим.
Как получить и обработать значение
Передаваемое значение после инициализации SDK записывается в поле payload.
Получайте значение таким образом:
YandexGame.EnvironmentData.payload
Обычная ссылка без Deep Linking не передаёт никаких значений в payload. В таком случае, поле payload будет пустым.
Наглядный пример работы с Deep Linkings Вы можете наблюдать в следующем разделе.
? Инструмент для отладки
Вы можете легко встроить в игру инструмент для отладки, в котором можно запустить вызов основных методов плагина. Грубо говоря, у Вас в игре будет панель с “мини демо-сценой плагина”. Также Вы сможете увидеть отрисовку блоков для рекламных баннеров (RTB-Блоки).
Что нужно сделать, чтобы запустить игру в отладочном режиме
- В Unity найдите префаб DebuggingModeYG. Он находится в папке YandexGame → Prefabs.
- Добавьте префаб на главную сцену в проекте (которая открывается первой при запуске игры). Префаб DebuggingModeYG - это синглтон объект. Синглтон - это объект, который не будет удаляться при переходе на другую сцену, и не будет создаваться заново.
- Настройте DebuggingModeYG. Укажите значение для параметра Payload Password. Это значение, которое Вы будете передавать с помощью Deep Linking. Можете написать слово, например, debug и добавить свой пароль, например, 123. Получится debug123.
- Теперь вы можете запускать игру с припиской ?payload=debug123 в конце ссылки игры, и она запустится в отладочном режиме.
- При запуске игры в отладочном режиме Вы должны увидеть кнопку для развертывания панели управления в правом нижнем углу.
Это должно выглядеть следующим образом:
Справа на скриншоте Вы можете видеть панель управления. Слева блок, в котором должен рисоваться баннер.
? Ярлык на рабочий стол
С помощью диалогового окна Вы можете предложить пользователю добавить на рабочий стол ярлык — это может быть ссылка на игру, но чаще всего это ярлык Яндекс Игр, зависит от разных обстоятельств.
Вызов диалогового окна
Используйте метод YandexGame.PromptShow()
, чтобы вызвать диалоговое окно, в котором будет предложено установить ярлык.
Доступность опции зависит от платформы, внутренних правил браузера и ограничений платформы Яндекс Игры. Для того, чтобы убедиться, что ярлык можно добавить, плагин использует параметр YandexGame.EnvironmentData.promptCanShow
. После инициализации SDK данный параметр будет равен true
, если ярлык можно установить. Вы также можете использовать параметр promptCanShow
для написания своих скриптов для ярлыка, таких как, например, скрипт PromptYG. Или можете просто использовать данный скрипт.
Компонент PromptYG
В папке с префабами есть готовый, настроенный префаб DesktopShortcut со скриптом PromptYG. В префабе нужно только изменить кнопки под стилистику Вашей игры. Скрипт PromptYG после инициализации SDK сам покажет нужную кнопку.
Для использования скрипта PromptYG нужны три кнопки (три состояния):
Show Dialog — Можно установить ярлык. При состоянии Show Dialog будет показана кнопка, которая вызывает описанный выше метод PromptShow()
.
Not Supported — Ярлык не поддерживается. При состоянии Not Supported, будет показана отключённая кнопка, внутри которой пояснения о том, что ярлык не поддерживается.
Done — Ярлык уже установлен. При состоянии Done будет показана отключённая кнопка, внутри которой пояснения о том, что ярлык уже установлен.
Ярлык установлен
После того, как пользователь установит ярлык, произойдут две вещи:
- Параметр
YandexGame.savesData.promptDone
будет равенtrue
. С помощью данного параметра при повторной попытке установить ярлык, можно проверять, делал ли уже эту операцию пользователь раньше. За установление ярлыка игроку можно давать награду. Поэтому, чтобы не награждать игрока дважды, можно делать проверку с помощьюpromptDone
. - Будет вызвано событие
YandexGame.PromptSuccessEvent
. Вы можете подписаться на него, чтобы наградить пользователя за установление ярлыка. Или вывести сообщение об успешно выполненной операции.
⭐ Оценка игры
Вы можете попросить пользователя оценить игру и написать комментарий во всплывающем окне (появится в момент запроса оценки, закрывая фон приложения). Всплывающее окно не будет показано, если пользователь не авторизован или оценивал игру ранее.
Чтобы вызвать окно для оценки игры используйте метод YandexGame.ReviewShow(bool authDialog)
. Данный метод откроет окно для оценки игры, если такая опция доступна. Принимает перегрузку boolean типа. Поставьте true, чтобы открывалось окно авторизации в случае, если пользователь не авторизован.
Данный метод так же можно выполнит через скрипт ReviewYG. В этом случае значение Auth Dialog устанавливается в компоненте ReviewYG.
Для того, чтобы убедиться, что всплывающее окно для оценки игры можно отобразить, плагин использует параметр YandexGame.EnvironmentData.reviewCanShow
. После инициализации SDK данный параметр будет равен true
, если можно открыть окно для оценки игры. Вы также можете использовать данный параметр reviewCanShow
для написания своих скриптов, таких как, например, скрипт ReviewYG. Или используйте данный скрипт.
В папке с YandexGame → Prefabs есть префаб Review со скриптом ReviewYG.
Скрипт ReviewYG имеет четыре ивента:
Review Available — выполните действие, которое должно произойти, если отзыв доступен (если reviewCanShow = true
). Действие может быть, например, показать кнопку.
Review Not Available — выполните действие, которое должно произойти, если отзыв НЕ доступен (если reviewCanShow = false
). Действие может быть, например, скрыть кнопку.
Left Review — выполните действие, которое должно происходить в случае, если пользователь оставил отзыв. За это можно выдавать награду. На данный ивент так же можно подписаться через YandexGame скрипт. В компоненте YandexGame данный ивент называется ReviewDo.
Not Left Review — выполните действие, которое должно происходить в случае, если пользователь НЕ оставил отзыв, а закрыл окно для оценки игры.
Для написания своих скриптов используйте ивент YandexGame.ReviewSentEvent
.
Когда пользователь закроет окно или оставит отзыв, из скрипта YandexGame
вызовется ивент ReviewSentEvent(bool sent)
. Перегрузка sent будет равна:
true — если пользователь оставил отзыв;
false — если пользователь закрыл окно. При этом параметр YandexGame.*EnvironmentData.reviewCanShow
станет равен false
на данную игровую сессию.*
? Яндекс Метрика
Настройка метрики
-
Описание процесса создания счётчика и метрик в сервисе “Яндекс.Метрика”.
-
Создайте счётчик в “Яндекс.Метрика”
-
Создайте цель
-
Скопируйте номер счётчика (Как найти номер счетчика)
-
В настройках плагина Info YG включите опцию Metrica Enable и вставьте номер счётчика в параметр Metrica Counter.
-
После создания и настройки счётчика - автоматическая метрика уже будет отправляться. Но Вы так же можете отправлять свои метрики по событиям в игре.
Отправка метрики
Для отправки метрики используется класс YandexMetrica — он представляет собой статический класс, который содержит методы для отправки метрик в сервис “Яндекс.Метрика”.
-
Описание методов
Метод
YandexMetrica.Send(string eventName)
с одним параметром типа "string" используется для отправки метрики без параметров.Метод
YandexMetrica.Send(string eventName, IDictionary<string, string> eventParams)
с двумя параметрами — строковым и словарем типа "IDictionary<string, string>
" — используется для отправки метрики с дополнительными параметрами. Если словарь параметров пустой или равен null, вызывается вышеописанный метод Send с одним параметром. Иначе, метод сериализует словарь параметров в JSON-строку с помощью вспомогательного класса "JsonUtils" и отправляет событие с параметрами пользователя.Если приложение запущено в режиме редактора Unity, информация о метриках будет выводиться в консоль. В противном случае, метрики будут отправлены на сервер "Яндекс.Метрика".
После отправки метрик, через некоторое время на сайте Вы сможете увидеть отправленные метрики в разделе “Конверсии”:
-
Подробнее о дополнительных параметрах
Вложенные метрики могут быть более удобными и информативными.
Рассмотрим пример отправки событий в метрики по вхождению в триггеры в игре. В таком случае, у нас будет одна цель, которая в себе будет содержать сколько угодно событий.
Выглядит в метриках это так:Необходимо создать лишь одну цель, и записывать в неё события с любым именем. И события будут в одном месте, будто в папке.
Пример класса для отправки метрик:
using System.Collections.Generic; using UnityEngine; using YG; public class MetricaSender : MonoBehaviour { public void Send(string id) { YandexMetrica.Send(id); } public void TriggerSend(string name) { var eventParams = new Dictionary
{ { "triggers", name } }; YandexMetrica.Send("triggers", eventParams); } } Метод
Send
в данном случае отправляет метрику без вложений.Метод
TriggerSend
отправляет вложенные метрики в цель “triggers”. В игре, при входе персонажем в триггер выполняется методTriggerSend
, в записывается наименование триггера.Посмотреть вложенные метрики на сайте:
? Модули
Флаги (удаленная конфигурация)
? Релизы
Версия 1.6.3 critical
-
Новый лоадер SDK Яндекс Игр (критично)
Изменён путь SDK
https://yandex.ru/games/sdk/v2
на/sdk.js
. Новые требования платформы. -
Внутриигровые покупки (критично)
- Обновлён скрипт PurchaseYG, теперь он получает корректный код валюты. Добавлена опция подгрузки изображения валюты.
- В данные покупок (класс
Purchase
) добавлены поляprice
,priceCurrencyCode
иcurrencyImageURL
.
-
Лидерборды
- Компонент LeaderboardYG теперь имеет улучшенную симуляция для тестирования в Unity Editor. Будут также как в ЯИ отображаться первые игроки с лучшим рекордом и игроки вокруг текущего пользователя. Порядок расстановки игроков в таблице будет зависеть от рекорда, который можно выставить у игроков в симуляции таблиц в InfoYG. Также, теперь на симуляцию повлияет галочка Is Invert Sort Order. Можно у какого-нибудь игрока из списка выставить Unique ID, например, 000. И в разделе Player Info Simulation выставить ID текущему игроку 000, тогда в таблице будет отмечаться текущий игрок и вокруг него будут выстроены ближайшие по рекорду игроки.
- При использовании ивента
onGetLeaderboard
отдельно от скрипта LeaderboardYG при старте игры информация передаваемая ивентом приходила с задержкой (после инициализации лидербордов, когда полеinitializedLB
было =true
). Теперь данного поля нет и не нужно ждать инициализации, со старта данные приходят. - Реорганизация и перемещение файлов и кода касающихся лидербордов.
- Теперь рекорд отправляется long типом (метод
NewLeaderboardScores
).
-
Paying Status (статус платёжеспособности пользователя)
Добавлено поле payingStatus. Его можно найти в InfoYG → Player Info Simulation и установить значение для симуляции в эдиторе. В коде получить значение можно так:
YandexGame.payingStatus
. Вернётся string значение.Описание опции — четыре возможных значения, зависящих от частоты и объема покупок пользователя:
- paying — пользователь купил портальную валюту на сумму более 500 рублей за последний месяц.
- partially_paying — у пользователя была хотя бы одна покупка портальной валюты реальными деньгами за последний год.
- not_paying — пользователь не делал покупок портальной валюты реальными деньгами за последний год.
- unknown — пользователь не из РФ или он не разрешил передачу такой информации разработчику. Плагин ещё устанавливает unknown, если пользователь не авторизирован.
-
Timer Before Ads
Скрипт Timer Before Ads доработан (реклама в процессе игры). Яндекс Игры опубликовали статью с правилами показа рекламы. В связи с этим, по стандарту отчёт таймера будет начинаться с 2-ух секунд, а при активации таймера игра остановится с помощью компонента Viewing Ads YG. Можете сделать свою реализацию остановки, для этого теперь есть unity ивент Do Pause.
-
Image Load YG
Усовершенствован компонент Image Load YG. Одинаковые изображения не будут скачиваться несколько раз.
Версия 1.6.2
Исправления ошибок:
-
Локализация
Была устранена путаница с получением параметра языка. Есть три поля:
YandexGame.lang
,YandexGame.EnviromentData.language
,YandexGame.savesData.language
. При различных обстоятельствах поля могли выдавать ложную информацию. Сейчас всё стабильно. Советую использоватьYandexGame.lang
, если используете локализацию от плагина. ИYandexGame.EnviromentData.language
, если нужно получить язык, который выдал SDK Яндекс Игр.YandexGame.savesData.language
в будущем будет удалён. -
Исправлены ошибки компиляции
В InfoYG (настройки плагина) при нажатии на кнопки активации дополнительных библиотек для тех или иных задач, предположительно, в новых версиях Unity компиляция происходила по какой то причине не корректно. Сейчас производится дополнительная компиляция после всех операций. Но если всё же возникнут проблемы, они должны исчезнуть при следующей компиляции (измените и сохраните любой скрипт).
-
Ивент onResetProgress
Вызывался раньше выполнения метода OnEnable стандартных скриптов, что затрудняло выполнить метод по событию при первом запуске игры. onResetProgress - вызывается при установке сохранений в дефолтные значения. Плагин вызывает ивент при первом запуске игры. Далее он будет вызываться только если вы выполните метод
YandexGame.ResetSaveProgress()
. -
Background фоновое изображение при загрузке
Фоновое изображение загрузочного экрана не выгружалось после загрузки игры, что могло вызывать небольшую потерю оптимизации.
-
Эмуляция ошибки при просмотре рекламы за вознаграждение
Снова работает. Параметр Test Error Of Rewarded Ads In Editor в Info YG - эмулирует вызов ошибки при просмотре рекламы за вознаграждение. (Только для Unity Editor).
-
Другие правки…
Версия 1.6.1
-
Данные о платформе и браузере
Информацию на какой платформе и в каком браузере запущена игра Вы сможете узнать из раздела “Данные”.
-
Реклама за вознаграждение
В плагине есть функция “анти-абуза” рекламы за вознаграждения. Это сделано для избежание накруток вознаграждения, когда реклама не открылась, но каллбек о вознаграждении приходил.
Также эта функция не давала вознаграждения, если во время просмотра рекламы перейти на другую вкладку или скрыть игру другим способом и таким образом пропустить просмотр рекламы. Это модерация не одобрила. Сейчас вознаграждение выдаётся если во время просмотра рекламы игра была в расфокусе. Но если реклама не откроется вовсе, то также “анти-абуз” сработает.
-
Массив purchases от внутриигровых покупок
Для своей реализации покупок может понадобиться массив purchases. В версии плагина 1.6 массив инициализировался с задержкой после запуска игры. Сейчас данные массива приходят до выполнения вашего кода игры и можно использовать поле purchases со старта игры.
-
Метод Reset Save Progress
Улучшена синхронизация двух устройств при сбросе прогресса.
-
Вырезаны кастомные баннеры
Они доработаны и перемещены в отдельный модуль.
-
Unity 2023
Заменены некоторые методы, которые являются устаревшими для Unity 2023+.
-
Настройки дополнительных библиотек
В Info YG есть кнопки для активации и деактивации сторонних библиотек для тех или иных функций.
Теперь под кнопками надписи выделяются цветом в зависимости от активации библиотеки.
Теперь перед автоматическим импортом библиотек спрашивается разрешение.
После компиляции скриптов, выходит уведомление с просьбой перезагрузить Unity Editor. Перезагрузка Unity поможет избежать вопросов о возникших ошибках, т.к. были обращения на то, что после активации библиотек были проблемы с инициализацией некоторых скриптов. После перезагрузки это должно прийти в норму.
-
Другие исправления, доработки, перемещения файлов и кода
Версия 1.6
-
Инициализация
- Загрузка игры будет происходить только после полной инициализация SDK Яндекс Игр.
- Обращение к данным плагина теперь необязательно. Раздел инициализации становится не актуальным.
- На локальном хосте игра запускается.
-
Реклама
- Новый скрипт Ad Notification YG (документация)
- Новый скрипт Timer Before Ads YG (документация)
- В Info YG новый параметр Load Ad With Delay Simulation:
Задержка открытия полноэкранной рекламы. Может быть полезна для тестирования уведомления о том, что скоро откроется реклама, перед ёё показом (в момент ожидания рекламы). - Для тестирования в Unity Editor ошибки при показе видео рекламы теперь есть флаг Test Error Of Rewarded Ads In Editor в Info YG. Если включить данный параметр, то при открытии рекламы за вознаграждение появится красный экран и вознаграждение не будет выдано.
-
Улучшен скрипт Viewing Ads YG
- Увеличена надёжность. В том числе теперь скрипт деактивирует Event System во время показа рекламы.
- Параметр Do Close Void On Awake заменён на Awake Set Values.
-
Лидерборды
- Рекорд запишется в таблицу только если пользователь авторизован.
- Возможность не записывать в таблицу скрытых пользователей.
Параметр Save Score Anonymous Players в Info YG.
true - анонимные пользователи будут записываться.
false - анонимные пользователи не будут записываться.
-
Выполнение любого метода при закрытии игры.
Выполнение любого Вашего метода при закрытии или обновлении страницы с игрой.
Имеются всплывающие подсказки.
-
Обновлена документация для метрик
Более подробная информация.
-
Кодировка UTF-8
Не все скрипты имели необходимую кодировку UTF-8 для русского языка. Из-за этого русский язык у кого то мог не отображаться. Теперь все скрипты имеют кодировку UTF-8 поддерживающую кириллицу.
-
Локализация
Исправлены некоторые малозначительные баги с компонентами Language YG и Lang YG Additional Text.
-
Исправления мелких ошибок
Версия 1.5.2
-
Game Ready API
Теперь есть контроль над Game Ready API. Об этом можете почитать в новом разделе.
-
Лидерборды
- При симуляции лидерборда в Unity Editor, если при обновлении лидерборда не нашлось по его названию в Info YG соответствующего эмуляционного лидерборда, то раньше возникала неявная ошибка. Сейчас лидерборд корректно загружается, но показывает "нет данных".
- В лидербордах, исправлено иногда неточное отображение десятичной части счета в рекордах внутри игры.
-
Новые разделы документации
Версия 1.5.1
-
Реклама
- Выключение первого показа рекламы в версии 1.5 сломалось. В версии 1.5.1 - работает.
- Устранена возможность фокуса игры при показе первой рекламы в момент когда игра загрузилась.
- Добавлен параметр Rewarded After Closing в Info YG.
Из моего поста в игре “Эпик Шутер” второй пункт отклонения был из за того, что после выдачи вознаграждения по какой то причине воспроизвёлся звук, но реклама еще не была закрыта. Чтобы исключить такую ситуацию, включённый параметр Rewarded After Closing будет означать, что вознаграждение будет получено только после просмотра и закрытия рекламы. - Поле
YandexGame.timerShowAd
стало публичным. Его можно использовать для отслеживания сколько осталось времени до следующего показа рекламы. Это может пригодиться для таймера перед показом рекламы.
-
Усовершенствована обработка инициализации
Добавлены дополнительные проверки на инициализацию.
Теперь даже если инициализация не будет произведена, в игру будут переданы данные как для неавторизированного пользователя и Get Data Event сработает. Но параметры окружения загружены не будут. -
В скрипте Viewing Ads YG новый параметр Do Close Void On Awake
Выполнить метод закрытия рекламы (Closing AD Values в Viewing Ads YG) в методе Awake (то есть при старте сцены).
Это позволит не прописывать события вроде аудио пауза = false или timeScale = 1 в ваших скриптах в методах Start.Обратите внимание на новый раздел документации - “Простой способ настройки Viewing Ads YG”.
-
Доп проверки на вкл/выкл кастомных баннеров
(Для тех, у кого ошибочно кастомные баннеры компилировались и попадали в проект, что могло вызвать ошибки).
Версия 1.5
-
Локализация
- Поддержка Text Mesh Pro
- Новый компонент Lang YG Additional Text. Подробнее в разделе локализации.
- Автолокализация теперь работает и на деактивированных объектах.
-
Define system
В Info YG появились кнопки для отключения и включения:
- Библиотеки Newtonsoft для использования автоматической локализации.
- Библиотеки Newtonsoft для использования в системе сохранений. Newtonsoft json net позволяет сохранять массивы в массивах, классы. Это продвинутая работа с json. Но в сборке игра будет весить на 2мб больше с использованием Newtonsoft.
- Библиотеки TMPro (Text Mesh Pro).
Также, после импорта плагина в списке scripting define symbols будет создан define YG_PLUGIN_YANDEX_GAME. Активность библиотек также контролируется с помощью списка scripting define symbols.
-
Реклама
- Добавлен параметр:
-
YandexGame.nowAdsShow
тип boolean
true
— Полноэкранная или видео реклама открыта в данный момент.false
— Полноэкранная или видео реклама закрыта в данный момент.
Раннее были только параметры:
-
YandexGame.nowFullAd
тип boolean
true
— Полноэкранная реклама открыта в данный момент.false
— Полноэкранная реклама закрыта в данный момент.
-
YandexGame.nowVideoAd
тип boolean
true
— Видео реклама за вознаграждение открыта в данный момент.false
— Видео реклама за вознаграждение закрыта в данный момент.
- Если время просмотра рекламы за вознаграждение составляет менее двух секунд, то вознаграждение не будет получено. Вместо этого вызовется ивент ошибки.
- Теперь и при включённом параметре Singleton будет показываться реклама при открытии новой сцены. Если, конечно, включен параметр Ad When Loading Scene в Info YG.
- Если при загрузке игры была открыта реклама, и после загрузки она также остаётся открытой, то после инициализации SDK вызывается ивент открытия рекламы.
-
Дополнительный контроль над симуляцией
В Info YG найдёте настройки симуляции для:
- Параметры игрока. Например, имя, аватар, устройство пользователя.
- Создание эмулированных лидербордов вплоть до заполнения информации о игроках.
- Тоже самое для внутриигровых покупок.
-
Доработка сохранений загрузки игрового прогресса
- Добавлена опция Save On Quit Game в Info YG. Выполняет метод
SaveProgress
при выходе из игра (закрытии страницы). - Файл сохранений для тестирования в Unity Editor теперь сохраняется в папку YandexGame/WorkingData/Editor и имеет расширение json. Теперь можно удобно читать и менять сохранения в файле.
- Устранена проблема, когда компилятор ссылался не на ту ошибку при сохранении или загрузке.
- Добавлена опция Save On Quit Game в Info YG. Выполняет метод
-
Настройка иконки загрузочного экрана
В Info YG параметр Logo Image Format задаёт расширение изображения иконки, и возможность её отключить.
-
Новый компонент Activity On Authorization YG
Позволяет выполнить действие в зависимости от авторизации пользователя.
Например, легко отключить какую-либо кнопку, если пользователь неавторизован. -
Обновление задело практически весь код плагина
Особо можно выделить:
- Таблицы лидеров
- Внутриигровые покупки
Для этих пунктов смотрите обновлённую документацию.
- Post process build система
- Скрипт оценки игры
- Debugging инструмент
- Удаление лишнего
- Реструктуризация кода
- Подготовка к модульной системе
-
Ссылки на документацию
Добавлены быстрые ссылки на документацию:
Также добавлены ссылки на соответствующий раздел документации в разных компонентах:
Версия 1.4
-
Яндекс Метрика с полным функционалом
Добавлена возможность отправлять метрики с параметрами и без. Документация Яндекс Метрики
-
Перенесены параметры из шаблона PluginYG
Были перенесены параметры из полей шаблона в настройки плагина InfoYG. Кроме параметров баннеров (это не рекламные баннеры), они еще требуют доработки. Теперь включить и настроить метрику, опцию “Pixel ratio”, первый показ рекламы - можно не заходя в Player настройки.
-
Более тонкая настройка сохранений
В InfoYG в настройках сохранений теперь есть параметр Save Local Sync. Описание: синхронизировать облачные сохранения с локальными? Если localSaveSync = false при включенных облачных сохранениях, то локальные просто не будут использоваться.
-
Доработка перехода по ссылке
Методы перехода по ссылке (OnURL, _OnURL_Yandex_DefineDomain) адаптированы под браузер Safari и другие браузеры в которых раньше могли не открываться ссылки.
-
Статичный метод для конвертации рекорда в time type
Объяснение работы с методами конвертации в разделе «Лидерборды».
-
Переименованы методы В YandexGame
Переименованы некоторые, методы связанные с инициализацией. Когда-то они имели функционал авторизации. Имена, содержащие слово Authorization теперь называются со словом Initialization.
Версия 1.3.6
-
Фикс в методе Load Local
При отключении облачных сохранений – локальные не работали. В методе LoadLocal() была опечатка. Исправлено!
-
Фикс в компоненте ViewingAdsYG
Исправлен баг некорректной работы Remember Previous State в параметре Pause Method. После показа рекламы ивент открытия и закрытия рекламы проходил два раза если скрипт ViewingAdsYG висел на объекте YandexGame, из-за идентичных по названию методов, которые принимали Send Message из index.html.
Версия 1.3.5
-
Устранено зависание игры
На мобильных устройствах в некоторых браузерах при открытии некоторых окон и нажатии на шторку Я.игры игра зависала. Сейчас не должно такого быть.
-
Сохранение массива массивов
Вернулся JsonUtility и появилась возможность выбрать между JsonUtility и JsonConvert.
Недостаток класса JsonConvert в том, что при его использовании в билд проекта добавляется библиотека JsonNet и конечный вес игры увеличивается на ~2мб.
Преимущество класса JsonConvert — сохранение массива в массиве. Используйте JsonUtility, если Вам не нужно сохранять массив в массиве, для этого ничего не требуется делать, JsonUtility используется по умолчанию.
Чтобы использовать JsonConvert: раскомментируйте первую срочку “
//#define JSON_NET_ENABLED
” в скрипте YandexGame. -
Внедрён перевод слов “unauthorized” и “anonymous”
Перевод на все языки внедрён в скрипты “LeaderboardYG” и “GetPlayerYG”.
В Ваших собственных скриптах при получении данных, например, имя пользователя, если имя будет “unauthorized” или “anonymous”, то оно не будет переведено. То есть, в Ваших скриптах перевод нужно будет делать самостоятельно. Для этого можете воспользоваться методами:
YandexGame.Instance.infoYG.UnauthorizedTextTranslate();
YandexGame.Instance.infoYG.IsHiddenTextTranslate();
Слово anonymous заменено на Is Hidden — означает “скрытый”.
Методы возвращают переведённое слово. Язык определяется в зависимости от настроек плагина. Так же методы имеют перегрузку language — Вы можете записать в перегрузку язык, на который требуется перевести слово.
-
Доработан ивент CloseFullAdEvent
Теперь вызывается только после успешного показа и закрытия рекламы.
-
Добавлен ивент ErrorFullAdEvent
ErrorFullAdEvent при ошибке отображения полноэкранной рекламы.
-
Доработан таймер интервала показа рекламы
Если при вызове полноэкранной рекламы она не была показана по причине ошибки или слишком частого вызова - таймер интервала показа полноэкранной рекламы сбрасывается.
-
Скрипт ReviewYG
Кнопка оценки игры не будет показана, если пользователь не авторизован и параметр authDialog = false. (Если пользователь не авторизован и authDialog = true, то кнопка будет показана и при нажатии на кнопку откроется диалоговое окно авторизации).
-
Метод OnURL_Yandex_DefineDomain
Если домен по какой то причине не определён, ссылка не откроется.
-
Компонент LeaderboardYG обзавёлся параметром "Is Hidden Player Photo"
Укажите ссылку на свой спрайт для отображения скрытых пользователей.
-
Ивент обновления таблицы в компоненте LeaderboardYG
"On Update Data" вызывается при получении данных таблицы лидеров.
-
Получение данных пользователей из таблицы лидеров
Получение данных пользователей из таблицы лидеров
У скрипта LeaderboardYG появился класс PlayersData - в этом классе содержатся данные пользователя:name
,rank
,score
,photo
. Скрипт LeaderboardYG содержит полеplayerData[]
- это массив, элементы которого являются вышеописанным классом PlayersData. Соответственно, в скрипте LeaderboardYG Вы можете взять массив игроков и получать их данные. Можете брать данные по ивенту "On Update Data". Также был создан учебный скрипт "GetLederboardData" для примера использования данных из таблицы, и в демо-сцене этот скрипт показано как работает. В сцене есть объект "Leaderboard Debug Data". Обратите внимания на лидерборд "Leaderboard Advanced & Time" в сцене (в объекте Canvas) и его ивент "On Update Data", он связан с вышеописанным скриптом. -
Метод для конвертации рекорда в time тип
В скрипте LeaderboardYG Вы сможете найти метод для конвертации рекорда в time тип:
TimeTypeConvert(int);
Принимает параметр типа int. Как должен выглядеть параметр: например, мы хотим конвертировать число 123.456f (123 секунды, 456 миллисекунд. Или 2 минуты, 3 секунды и 456 миллисекунд). В таком случае отправляемое число типа int должно выглядеть следующим образом: 123456. Метод TimeTypeConvert вернёт строку в зависимости от параметра decimalSize. Если decimalSize будет равен, например, 1, то мы получим строку “02:03.4”Это не самый удобный способ конвертации, потому что метод TimeTypeConvert был создан для получения и конвертации рекорда от Яндекса.
Версия 1.3.4
-
Изменена логика инициализации SDK
При тестировании черновика в режиме “черепашки” (ограничение таймаутов запросов) - не будут загружаться данные игрока (будет как не авторизированный пользователь), кроме сохранений, они будут браться из локальных сохранений.
-
Внедрён “Старт игр”
Сигнализирование Яндексу, что игра загрузилась.
-
Настройка Pixel Ratio
В шаблоне PluginYG поле Pixel ratio mobile отвечает за значение Device Pixel Ratio в index файле.
Заполните поле выбранным Вами значением, например: 1.3
Оставьте данное поле пустым, если не хотите ничего менять.
-
Сохранение массива массивов
В скрипте YandexGame - JsonUtility был заменён на JsonConvert.
-
Вырезан сайтлок
В связи с новым пунктом 1.18 в правилах требований к игре был вырезан сайтлок, т.к. он блокировал страницу игры расположенную на ином домене.
-
Скорректирован показ рекламы при запуске игры для разных устройств
В обновлении v1.3.2 был такой же пункт. Теперь стало так же, как было до обновления v1.3.2 в связи с изменением логики ****инициализации SDK.
Версия 1.3.3
-
Возможность выключить автоматическую архивацию билда
В настройках плагина InfoYG опция Auto Build Archiving отвечает за активность функции авто-архивации билда.
-
Фикс бага, в котором событие закрытия полноэкранной рекламы могло не выполняться при симуляции в Unity
Если в момент симуляции показа полноэкранной рекламы производилась загрузка новой сцены, то событие закрытия рекламы могло не выполняться, из-за этого далее реклама не показывалась. Данный баг присутствовал только в Unity Editor, но не в готовой сборке.
Версия 1.3.2
-
Автоматическая архивация билда
После успешного создания билда игры, папка с содержанием билда пакуется в zip архив. При повторной сборке игры, архив не перезапишется, но создастся новый пакет с приписанным номером в названии файла.
-
Обновлён скрипт Viewing Ads YG
Документация обновлена. При переходе с предыдущих версий плагина необходимо убедиться, что настройки компонента Viewing Ads YG удовлетворительны, т.к. были изменены некоторые опции.
-
Скорректирована функция показа рекламы при загрузке сцен
В настройках плагина InfoYG опция показа рекламы при загрузке сцен изменилась. Теперь данная опция называется Ad When Loading Scene. По умолчанию = true — это значит, что показ рекламы будет вызываться при загрузке любой сцены в игре. Значение false — реклама не будет показываться при загрузке сцен.
-
Отключение показа полноэкранной рекламы при запуске игры
По умолчанию первая реклама показывается еще до загрузки игры, это можно отключить:
- Перейдите в настройки проекта Project Settings → Player → Resolution and Presentation → WebGL Template
- Выберите шаблон PluginYG
- Найдите поле Off ads before loading game
- Заполните данное поле любым словом, например, запишите туда true
- Теперь полноэкранная реклама не будет показываться сразу при запуске игры.
-
Скорректирован показ рекламы при запуске игры для разных устройств
- На Desktop реклама показывается сразу при открытии страницы.
- На мобильных устройствах реклама показывается только после прогрузки игры. Мгновенный показ рекламы после открытия страницы с игрой может раздражать, особенно, если реклама будет тормозить, и из-за этого плюсом еще её будет сложно закрыть, что может происходить как раз при загрузке игры. По этому на мобильных устройствах реклама будет показываться после загрузки игры.
-
Кнопка вызова окна оценки игры
Кнопка для вызова окна оценки игры теперь отключается, если игра запущена на мобильном устройстве, т.к. на данный момент вызов такого окна по какой то причине может вывести игру из строя в каких то из браузеров.
Вы можете обратно включить кнопку, за это отвечает опция Show On Mobile Device в компоненте Review YG.
-
Фикс для ESC
При работе с ECS-фреймворками (DOTS, LeoECS, Morpeh, etc…) часто используют выключение перезагрузки домена. Для данной опции была внедрена перезагрузка статических полей плагина, что должно обеспечить корректную работу с ECS.
-
Фикс для инкогнито режима
В предыдущих версиях плагина, в режиме инкогнито в определённых браузерах загрузка локальных сохранений происходила с ошибкой из-за ограничения доступа браузера к данным, и далее из-за ошибки плагин работал не корректно. Начиная с версии плагина 1.3.2 данная ошибка успешно обрабатывается.
-
Фикс для компонента Language YG
В предыдущих версиях плагина, если на сцене отсутствовал объект YandexGame, то компонент LanguageYG не мог обнаружить Scriptable Object “InfoYG”. Начиная с версии плагина 1.3.2, если на сцене нет объекта YandexGame, то InfoYG берётся из папки YandexGame → WorkingData.
Версия 1.3.1
-
Быстрое внедрение Яндекс Метрики
Создайте счётчик на сайте Яндекс Метрика (https://metrika.yandex.ru/list?)). Скопируйте код счётчика. Найдите поле "Metric" в шаблоне PluginYG. Вставьте код счётчика в данное поле.
-
Фикс зависания игры на мобильном устройстве при открытии диалогового окна
Теперь зависания нет, кроме окна оценки игры! (Зависание окна оценки игры проверено в Яндекс браузере и Google Chrome. В Chrome зависание отсутствует, в Яндексе игра крашится!).
-
Фикс (https://t.me/yandexgame_plugin/13109)
Фикс проблемы с загрузкой облачных сохранений при использовании json в сохраняемых данных.
-
Фикс (https://t.me/yandexgame_plugin/12681)
Фикс (https://t.me/yandexgame_plugin/12681) бага с добавлением иконки на рабочий стол. Теперь при закрытии окна предлагающего создать иконку, кнопка вызова такого окна в игре скрывается, так как два раза такое окно открыть Яндекс не даёт.
Версия 1.3
-
Time тип для лидербордов
Доработан! Документация обновлена.
-
Обновлён Image Load YG
Компонент обзавёлся опцией Sprite Image. Перетащите в Sprite Image объект с компонентом Image, чтобы изображение загрузилось как спрайт.
-
Обновлена система сохранений
Локальные сохранения переделаны из PlayerPrefs в localStorage.
Интервал облачных сохранений (Save Cloud Interval) теперь по умолчанию равен 5.
Параметр Flush по умолчанию равен false (выключен).
Версия 1.2
-
Обновлена система сохранений
Решена проблема лимитов на облачные сохранения. Теперь данные сохраняются и локально и на облако. Всё происходит автоматически, от вас не требуется никаких действий. Появились новые параметры сохранений в InfoYG.
-
Обновлен скрипт Viewing Ads YG
Добавлен контроль над курсором. Рекомендуется после обновления проверить настройки скрипта Viewing Ads YG в вашем проекте.
-
Добавлен статический ивент onResetProgress
YandexGame.onResetProgress
— это установка всех параметров и сохранений игры по умолчанию. Вызывается при первом запуске игры. -
Добавлен статический ивент onQualityChange
GraphicSettingsYG.onQualityChange
— вызывается при смене графики по средствам компонента Graphic Settings YG. -
Заменен стандартный логотип при загрузке игры на лого плагина
Всё же, не используйте его. Используйте свой логотип!
-
Синтаксис "new()"
Новый синтаксис
new()
возвращен на старыйnew Тип()
. Больше не будет из-за этого ошибок на более старых версиях ПО.
Версия 1.1
-
Создан функционал для Sticky-баннеров
Добавлен API для sticky баннеров. Документация обновлена.
-
Вырезаны старые баннеры
Удален API для старых кастомных баннеров. Но возможность добавления адаптивных div блоков для иного функционала осталась. Актуальная документация по этому вопросу внутри пакета плагина.
-
Оценка игры (отзыв)
Полный функционал оценки игры. Подробнее в документации.
-
Изменен ивент вознаграждения за просмотр рекламы
Раньше за вознаграждение отвечал ивент Close Video. Теперь Close Video отвечает только за закрытие рекламы и не имеет перегрузок.
Для вознаграждения игрока используйте ивент Reward Video.
В компоненте YandexGame ивент Reward Video Ad
В скрипте:
RewardVideoEvent<int id>;
-
Удалена опция Check AdBlock
Функционал Check AdBlock и её ивенты заменены на один ивент Error Video.
В компоненте YandexGame ивент Error Video Ad
В скрипте:
ErrorVideoEvent;
-
Изображение на фон при загрузке игры
Уже давно, по какой то причине перестала отображаться фоновая картинка при загрузке игры. Вместо неё можно было наблюдать белый экран.
Чтобы отобразить фоновое изображение, положите свою картинку в папку WebGLTemplates → PluginYG под названием background.png. Точно так же, как с logo.png. Из настроек Player → Splash Image при этом нужно удалить Background Image.
-
Доработка скрипта Leaderboard YG
Добавлен параметр Update LB Method.
Удалён параметр Load Avatars. Чтобы отключить загрузку аватарок выберите None Photo в параметре Player Photo.
-
Фикс для автопереводчика
Добавлен параметр Domain Auto Localization в InfoYG. Поменяйте домен, если возникли проблемы с авто-переводом.
-
Новые настройки рекламы в InfoYG
Fullscreen Ad Interval — Интервал запросов на вызов полноэкранной рекламы.
Duration of Ad Simulation — Длительность симуляции показа рекламы.
Версия 1.0
-
Корректировка масштаба шрифта отдельно для каждого языка и шрифта
В InfoYG найдете массив Font Size Correct. В нём содержатся еще массивы типа integer (для каждого языка). Создайте новый элемент массива, номер которого будет соответствовать номеру элемента нужного шрифта в массиве шрифтов (массив Fonts в InfoYG).
Корректировка осуществляется следующим образом:
Например, вы установили число 1 для Русского языка в первом элементе массива (для первого шрифта). В таком случае размер (Font Size) первого шрифта для Русского языка в игре будет увеличен на 1. Соответственно, если вы установите размер, допустим, -2, то Font Size шрифта уменьшится на -2.
-
Документация
Документация в PDF формате на Английском и Русском языках в папке YandexGame → Documentation.