Содержание
Leaderboards
(Необходимо импортировать модули Leaderboards и Authorization)
С помощью PluginYG2 вы можете записать рекорд в таблицу лидеров — это уже отобразит таблицу лидеров на сайте платформы в описании игры.
Также у вас есть возможность очень просто добавить таблицу прямо в игру с помощью считай одного префаба.
Настройка для Яндекс Игр
В консоли игры перейдите в раздел «Лидерборды» и запишите «Техническое название» соревновательной таблицы. «Локализация наименования» нам не нужна, а остальные опции имеют пояснения.
После добавления метода записи нового рекорда в таблицу, она будет отображаться следующем образом:
Работа с кодом
Для записи нового рекорда используйте следующий метод:
YG2.SetLeaderboard(string "техническое название таблицы", int новый рекорд);
Он имеет ещё третью перегрузку string extraData. Можно передать строку, а потом при получении таблицы посмотреть поле её у каждого пользователя из списка.
- Запрос можно отправлять не чаще, чем раз в секунду. В противном случае он будет отклонен.
- Запись рекорда типа long не поддерживается.
Создание таблицы в 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».
Работа с кодом подробнее
Есть метод получения данных лидерборда 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.