
Содержание
Таблица лидеров
Необходимо импортировать модуль Leaderboards. Вместе с ним при импорте через инструмент контроля версиями автоматически импортируется зависимый модуль Authorization.
Для отображения таблицы лидеров на страничке игры в Яндекс Играх — достаточно лишь воспользоваться одним методом записи нового рекорда.
С помощью PluginYG2 у вас также есть возможность очень просто добавить таблицу прямо в игру используя один префаб.
И конечно, PluginYG2 предоставляет весь остальной API вплоть до того, чтобы создать кастомную реализацию таблицы внутри игры.
Настройка для Яндекс Игр
В консоли игры, перейдите в раздел «Лидерборды» и запишите «Техническое название» соревновательной таблицы. «Локализация наименования» нам не нужна, а остальные опции имеют пояснения.

После добавления метода записи нового рекорда в таблицу, она будет отображаться следующим образом:

Работа с кодом
Для записи нового рекорда используйте следующий метод:
YG2.SetLeaderboard(string "техническое название таблицы", int новый рекорд);
Он имеет ещё третью перегрузку string extraData. Можно передать строку, а потом при получении таблицы посмотреть поле её у каждого пользователя из списка.
- Запрос можно отправлять не чаще, чем раз в секунду.
- Запись рекорда типа long не поддерживается.
Запись результата анонимных пользователей
Плагин позволяет скрыть отображение анонимных пользователей в таблице лидеров. Для этого выключите флаг у параметра «Save Score Anonymous».

Создание таблицы в Unity
Отображением таблицы занимается компонент Leaderboard YG. Все его опции имеют всплывающие подсказки. Обязательно заполните параметр Name LB — это техническое название таблицы, которое мы записывали в консоли разработчика.
В папке PluginYourGames/Modules/Leaderboards/Prefabs расположены примеры таблиц, возьмите их за основу.
- При использовании префабов PluginYG рекомендуется создавать свой префаб вариант для избежания проблем при обновлении плагина.
Всё что ниже — второстепенно
Простой вариант отображения таблицы
Для режима простого отображения рекордов достаточно указать в скрипте Leaderboard YG ссылку на компонент Text в опции Entries Text, галочка Advanced должна быть отключена для простой таблицы. И скрипт сам будет записывать в него данные таблицы.

Продвинутый (Advanced) вариант отображения таблицы
Отдельными блоками отображает всех игроков. Их рейтинг, аватар, ник, рекорд. Позволяет выделить топ игроков и пользователя аккаунта.
- Включите галочку Advanced.
- Entries Text заполнять необязательно.
- Укажите Root Spawn Players Data — это объект в иерархии которого будут создаваться объекты с компонентом LB Player Data YG. Каждый такой объект с данным компонентом — это игрок в таблице (информация о пользователе).
- Укажите Player Data Prefab — это должен быть префаб с компонентом LB Player Data YG. Создайте такой префаб по аналогии с готовыми примерами. Поля в LB Player Data заполняются по желанию.
У скрипта Leaderboard YG есть следующие публичные методы:
UpdateLB()— обновление таблицыSetLeaderboard(int score)— запись нового рекордаSetLBTimeConvert(float score)— запись нового рекорда и конвертация в Time тип.
Префаб таблицы Advanced создаёт экземпляры префаба из поля Player Data Prefab. Объект, который создаётся, это пользователь отображаемый в таблице лидеров. Вы можете отредактировать поля в скрипте LBPlayerDataYG:
При использовании префабов PluginYG рекомендуется создавть свой префаб вариант для избежания проблем при обновлении плагина.
Симуляция отображения таблицы в Unity Editor
Для отображения данных в таблице в Unity Editor, необходимо создать эти данные следующим образом:
В настройках плагина → Leaderboards есть массив таблиц для симуляции. Элемент этого массива — это лидерборд со всеми параметрами, и все их настраивать необязательно. Не все данные повлияют на симуляцию. Все данные отображаются, потому что используют тот же класс, в котором хранится информация о реальной таблице. Благодаря этому можно посмотреть какие реальные данные существуют.
- Создайте таблицу в массиве или измените уже имеющуюся.
- Запишите Techno Name.
- Entries — будет работать для не продвинутой таблицы.
- Is Invert Sort Order — можете установить порядок расстановки по возрастанию или по убыванию. Также, как настраиваете в консоли Яндекс Игр.
- Для отображения игроков в таблице создайте их, каждый элемент массива это игрок отображающийся в таблице. Заполните данные игрока по своему усмотрению:
- Rank — позиция в таблице (в симуляции выставляется автоматически).
- Score — рекорд игрока. По рекорду будет выставляться расстановка игроков.
- Name — имя игрока. Если назвать
anonymous, то будет симуляция анонимного игрока. - Photo — это ссылка на скачивание изображения для аватарки.
- Unique ID — пригодится для выделения пользователя в таблице, для этого Unique ID должен совпадать с одноимённым параметром в симуляции модуля авторизации.
Если не настроить симуляцию, лидерборд внутри Unity Editor будет отображать только надпись «Нет данных».
Time тип
- В консоли разработчика выберите Time тип лидерборда.
- Скорее всего, на первых местах таблицы вы захотите видеть рекорд игрока, который прошёл уровень за наименьшее время (быстрее всех). Для этого установите параметр Направление сортировки → Сортировка по возрастанию.
- Размер десятичной части счета оставьте на 0.
- В компоненте Leaderboard YG поставьте галочку напротив параметра Time Type Converter.
- При записи нового рекорда вместо метода
SetLeaderboardиспользуйте методSetLBTimeConvert(string "техническое название таблицы", float новый рекорд);
Новый рекорд вы передаёте в типе float, число может выглядеть, например, так: 180,135.
Рекорд записывается в формате «секунды». Например, рекорд «3 минуты» должен записываться как число «180».
Полный API
Есть метод получения данных лидерборда YG2.GetLeaderboard, он имеет различные перегрузки.
После выполнения метода GetLeaderboard вызовется событие YG2.onGetLeaderboard.
Событие передаёт класс LBData. Для использования данного класса необходимо подключить библиотеку YG.Utils.LB. Класс LBData содержит следующую информацию о лидерборде:
technoName— техническое название таблицыentries— описание таблицы в тексте. Это тот текст, который записывается в таблицу при выборе простого режима (Advanced = false).isDefault— является ли основным лидербордомisInvertSortOrder— сортировка. false = сортировка по убыванию. true = сортировка по возрастаниюdecimalOffset— размер десятичной части счёта. Это число определяет, сколько знаков из целого числа счета должны быть отображены после запятой. Например, значение 5712 в лидерборде при размере десятичной части равном 2 будет отображено как 57.12.type— тип таблицы: numeric или timecurrentPlayer— классLBCurrentPlayerData. Это информация о текущем пользователе. Имеет параметры:rank,scoreиextraData.players— список игроков (LBPlayerData[]). Массив игроков в таблице лидеров. Элементы массива содержат информацию о пользователе.
Класс LBPlayerData содержит следующую информацию о игроке:
rank— ранк игрока (позиция в таблице)name— ник пользователяscore— рекорд пользователяphoto— ссылка на аватар пользователяuniqueID— уникальный идентификатор
Пример кастомной таблицы можно найти в демо сцене Leaderboards.