icon

Leaderboards

(Необходимо импортировать модули Leaderboards и Authorization)
С помощью PluginYG2 вы можете записать рекорд в таблицу лидеров — это уже отобразит таблицу лидеров на сайте платформы в описании игры.
Также у вас есть возможность очень просто добавить таблицу прямо в игру с помощью считай одного префаба.

Настройка для Яндекс Игр

В консоли игры перейдите в раздел «Лидерборды» и запишите «Техническое название» соревновательной таблицы. «Локализация наименования» нам не нужна, а остальные опции имеют пояснения.

drawing

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

drawing

Работа с кодом

Для записи нового рекорда используйте следующий метод:
YG2.SetLeaderboard(string "техническое название таблицы", int новый рекорд);
Он имеет ещё третью перегрузку string extraData. Можно передать строку, а потом при получении таблицы посмотреть поле её у каждого пользователя из списка.

- В таблицу запишется новое число, даже если оно меньше предыдущего. Необходимо самостоятельно выполнять сравнение рекорда перед новой записью.
- Запрос можно отправлять не чаще, чем раз в секунду. В противном случае он будет отклонен.
- Запись рекорда типа long не поддерживается.
Подробнее о работе с кодом ниже

Создание таблицы в Unity

Отображением таблицы занимается компонент Leaderboard YG. Все его опции имеют всплывающие подсказки. Обязательно заполните параметр Name LB — это техническое название таблицы, которое мы записывали в консоли разработчика.

В папке PluginYourGames/Modules/Leaderboards/Prefabs расположены примеры таблиц, возьмите их за основу.

- Префаб необходимо поместить в Canvas объект.
- При использовании префабов PluginYG рекомендуется создавть свой префаб вариант для избежания проблем при обновлении плагина.
Что такое префаб вариант?

 Всё что ниже — второстепенно 

Простой вариант отображения таблицы

Для режима простого отображения рекордов достаточно указать в скрипте Leaderboard YG ссылку на компонент Text в опции Entries Text, галочка Advanced должна быть отключена для простой таблицы. И скрипт сам будет записывать в него данные таблицы.

Продвинутый (Advanced) вариант отображения таблицы

Отдельными блоками отображает всех игроков. Их рейтинг, аватар, ник, рекорд. Позволяет выделить топ игроков и пользователя аккаунта.

  1. Включите галочку Advanced.
  2. Entries Text заполнять необязательно.
  3. Укажите Root Spawn Players Data — это объект в иерархии которого будут создаваться объекты с компонентом LB Player Data YG. Каждый такой объект с данным компонентом — это игрок в таблице (информация о пользователе).
  4. Укажите 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:
icon

Префаб таблицы лидеров необходимо поместить в Canvas объект.
При использовании префабов PluginYG рекомендуется создавть свой префаб вариант для избежания проблем при обновлении плагина.
Что такое префаб вариант?

Симуляция отображения таблицы в Unity Editor

Для отображения данных в таблице в Unity Editor, необходимо создать эти данные следующим образом:

В настройках плагина → Leaderboards есть массив таблиц для симуляции. Элемент этого массива — это лидерборд со всеми параметрами, и все их настраивать необязательно. Не все данные повлияют на симуляцию. Все данные отображаются, потому что используют тот же класс, в котором хранится информация о реальной таблице. Благодаря этому можно посмотреть какие реальные данные существуют.

  1. Создайте таблицу в массиве или измените уже имеющуюся.
  2. Запишите Techno Name.
  3. Entries — будет работать для не продвинутой таблицы.
  4. Is Invert Sort Order — можете установить порядок расстановки по возрастанию или по убыванию. Также, как настраиваете в консоли Яндекс Игр.
  5. Для отображения игроков в таблице создайте их, каждый элемент массива это игрок отображающийся в таблице. Заполните данные игрока по своему усмотрению:
  • Rank — позиция в таблице (в симуляции выставляется автоматически).
  • Score — рекорд игрока. По рекорду будет выставляться расстановка игроков.
  • Name — имя игрока. Если назвать anonymous, то будет симуляция анонимного игрока.
  • Photo — это ссылка на скачивание изображения для аватарки.
  • Unique ID — пригодиться для выделения пользователя в таблице, для этого Unique ID должен совпадать с одноимённым параметром в симуляции модуля авторизации.

Если не настроить симуляцию, лидерборд внутри Unity Editor будет отображать только надпись «Нет данных».

Time тип

  1. В консоли разработчика выберите Time тип лидерборда.
  2. Скорее всего, на первых местах таблицы вы захотите видеть рекорд игрока, который прошёл уровень за наименьшее время (быстрее всех). Для этого установите параметр Направление сортировки → Сортировка по возрастанию.
  3. Размер десятичной части счета оставьте на 0.
  4. В компоненте Leaderboard YG поставьте галочку напротив параметра Time Type Converter.
  5. При записи нового рекорда вместо метода SetLeaderboard используйте метод SetLBTimeConvert(string "техническое название таблицы", float новый рекорд);

Новый рекорд вы передаёте в типе float, число может выглядеть, например, так: 180,135.
Рекорд записывается в формате «секунды». Например, рекорд «3 минуты» должен записываться как число «180».

Код таймера в вашей игре может выглядеть следующим образом
using YG;

class MyClass: MonoBehaviour
{
	float timer;

	void Update()
	{
		timer += Time.deltaTime;
	}

	// Пример записи нового рекорда Time типа
	void NewRecord()
	{
		YG2.SetLBTimeConvert("nameLB", timer);
	}
}

Работа с кодом подробнее

Есть метод получения данных лидерборда 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 или time
  • currentPlayer — класс LBCurrentPlayerData. Это информация о текущем пользователе. Имеет параметры: rank, score и extraData.
  • players — список игроков (LBPlayerData[]). Массив игроков в таблице лидеров. Элементы массива содержат информацию о пользователе.

Класс LBPlayerData содержит следующую информацию о игроке:

  • rank — ранк игрока (позиция в таблице)
  • name — рик пользователя
  • score — рекорд пользователя
  • photo — ссылка на аватар пользователя
  • uniqueID — уникальный идентификатор

Пример кастомной таблицы можно найти в демо сцене Leaderboards.