Unity #
Подключение #
Скачайте актуальный .unitypackage
cо страницы релизов на github.com и импортируйте в проект.
Для корректной работы необходимо импортироавать все файлы, кроме папки Examples
.
Ее можно импортировать по желанию.
В ней есть сцена с примерами использования.
Инициализация #
Когда игра загружена — плагин уже проинициализирован. Ничего дополнительно делать не нужно.
Сборка #
Для корректной работы плагина необходимо выбрать соответствующий WebGL Template
.
![](/images/unity/1.png)
Здесь есть ряд настроек внешнего вида:
Overlay Background Color
— цвет фона.
Progress Bar Background Color
— цвет фона загрузочной полосы.
Progress Bar Fill Color
— цвет самой полосы.
Game Distribution Game ID
— ID игры, если публикуете на GameDistribution.
VK Play Game ID
— ID игры, если публикуете на VK Play.
Цвет задаётся в формате HEX. Например, чёрный — #000000. Для значения по умолчанию нужно поставить знак -.
Чтобы заменить иконку — просто замените файл WebGLTemplates/Bridge/icon.png
.
⚠️ Предупреждение
Важно! При загрузке файлов на Crazy Games в пункте Game Type нужно выбрать HTML5, а не Unity.
Информация о платформе #
ID платформы #
Bridge.platform.id
Возвращает ID платформы, на которой запущена игра в данный момент. Возможные значения: playgama
, vk
, ok
, yandex
, crazy_games
, absolute_games
, game_distribution
, vk_play
, mock
.
Язык #
Bridge.platform.language
Если платформа предоставляет данные об языке пользователя — то это будет язык, который установлен у пользователя на платформе.
Если не предоставляет — это будет язык браузера пользователя.
Формат: ISO 639-1. Пример: ru
, en
.
Параметр из адресной строки #
Bridge.platform.payload
С помощью данного параметра можно в ссылку на игру встраивать какую-либо вспомогательную информацию.
Платформа | Формат ссылки |
---|---|
Playgama | — |
VK | vk.com/app8056947#your-info |
OK | — |
Yandex | yandex.com/games/play/183100?payload=your-info |
Crazy Games | crazygames.com/game/example?payload=your-info |
Absolute Games | — |
Game Distribution | — |
VK Play | — |
Mock | site.com/game?payload=your-info |
Информация о домене #
Bridge.platform.tld
Платформа | Возможные значения |
---|---|
Playgama |
null |
VK |
null |
OK |
null |
Yandex | com , ru , etc. |
Crazy Games |
null |
Absolute Games |
null |
Game Distribution |
null |
VK Play |
null |
Mock |
null |
Отправка сообщения платформе #
Bridge.platform.SendMessage(PlatformMessage.GameReady);
Сообщение | Описание | Где поддерживается |
---|---|---|
GameReady | Игра загрузилась, все загрузочные экраны прошли, игрок может взаимодействовать с игрой. | Yandex |
InGameLoadingStarted | Началась какая-либо загрузка внутри игры. Например, когда идёт загрузка уровня. | CrazyGames |
InGameLoadingStopped | Загрузка внутри игры окончена. | CrazyGames |
GameplayStarted | Начался геймплей. Например, игрок зашёл в уровень с главного меню. | CrazyGames |
GameplayStopped | Геймплей закончился/приостановился. Например, при выходе с уровня в главное меню, открытии меню паузы и т.д. | CrazyGames |
PlayerGotAchievement | Игрок достиг особенного момента. Например, победил босса, установил рекорд и т.д. | CrazyGames |
Информация о девайсе #
Тип девайса #
Bridge.device.type
Возвращает тип девайса, с которого пользователь запустил игру.
Возможные значения: Mobile
, Tablet
, Desktop
, TV
.
Информация об игроке #
Поддержка авторизации #
Bridge.player.isAuthorizationSupported
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
true |
Game Distribution |
false |
VK Play |
true |
Mock |
false |
Авторизован ли игрок в данный момент #
Bridge.player.isAuthorized
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex |
true /
false |
Crazy Games |
false |
Absolute Games |
true /
false |
Game Distribution |
false |
VK Play |
true /
false |
Mock |
false |
ID игрока #
Bridge.player.id
Если авторизация поддерживается на платформе и игрок авторизован в данный момент – возвращает его ID на платформе, иначе —
null
.
Имя игрока #
Bridge.player.name
Платформа | Возможные значения |
---|---|
Playgama |
null |
VK | Имя игрока |
OK | Имя игрока |
Yandex | Если игрок авторизован и дал игре доступ к личной информации — имя игрока, иначе —
null |
Crazy Games |
null |
Absolute Games | Если игрок авторизован — имя игрока, иначе —
null |
Game Distribution |
null |
VK Play | Если игрок авторизован — имя игрока, иначе —
null |
Mock |
null |
Аватар игрока #
Bridge.player.photos
Массив аватаров игрока, упорядоченный по возрастанию разрешения.
Платформа | Возможные значения |
---|---|
Playgama | Пустой массив |
VK | Массив ссылок на изображения |
OK | Массив ссылок на изображения |
Yandex | Если игрок авторизован и дал игре доступ к личной информации — массив ссылок на изображения, иначе — пустой массив |
Crazy Games | Пустой массив |
Absolute Games | Если игрок авторизован — массив ссылок на изображения, иначе — пустой массив |
Game Distribution | Пустой массив |
VK Play | Если игрок авторизован — массив ссылок на изображения, иначе — пустой массив |
Mock | Пустой массив |
Авторизация игрока #
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("scopes", true);
break;
}
Bridge.player.Authorize(options, OnAuthorizePlayerCompleted);
}
private void OnAuthorizePlayerCompleted(bool success)
{
if (success)
{
// Игрок успешно авторизован
}
else
{
// Ошибка, что-то пошло не так
}
}
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex | Если игрок уже авторизован —
true . Если не авторизован — показывается диалоговое окно авторизации. Далее
true /
false зависит от того авторизуется игрок или нет. |
Crazy Games |
false |
Absolute Games | Если игрок уже авторизован или открылось окно авторизации —
true . После авторизации происходит перезагрузка страницы.
false в случае ошибки. |
Game Distribution |
false |
VK Play | Если игрок авторизован —
true . Если игрок авторизуется —
true (после этого произойдёт перезагрузка страницы).
false в случае ошибки. |
Mock |
false |
Информация об игре #
Текущее состояние видимости #
Bridge.game.visibilityState
Возвращает текущее состояние видимости игры (вкладки с игрой).
Возможные значения: visible
, hidden
.
// Изменение состояния видимости можно отслеживать, подписавшись на событие
private void Start()
{
Bridge.game.visibilityStateChanged += OnGameVisibilityStateChanged;
}
private void OnGameVisibilityStateChanged(VisibilityState state)
{
switch (state)
{
case VisibilityState.Visible:
// Вкладка с игрой видима
break;
case VisibilityState.Hidden:
// Вкладка с игрой скрыта
break;
}
}
📝 Примечание
Нужно реагировать на изменение состояния рекламы. Например, выключать звук в игре приHidden
и включать приVisible
.
Пользовательские данные #
Есть два типа хранилища: локальное LocalStorage
и внутреннее PlatformInternal
.
При записи в локальное — данные сохраняются у игрока на конкретном девайсе, при записи во внутреннее — данные сохраняются на серверах платформы.
Тип хранилища по умолчанию #
Bridge.storage.defaultType
Используется автоматически, если при работе с данными не указывать конкретный тип.
Платформа | Возможные значения |
---|---|
Playgama | LocalStorage |
VK | PlatformInternal |
OK | Если игрок дал доступ — PlatformInternal , если нет — LocalStorage |
Yandex | Если игрок авторизован — PlatformInternal , если нет — LocalStorage |
Crazy Games | LocalStorage |
Absolute Games | Если игрок авторизован — PlatformInternal , если нет — LocalStorage |
Game Distribution | LocalStorage |
VK Play | LocalStorage |
Mock | LocalStorage |
Проверка на поддержку #
Bridge.storage.IsSupported(StorageType.LocalStorage)
Bridge.storage.IsSupported(StorageType.PlatformInternal)
Платформа | LocalStorage | PlatformInternal |
---|---|---|
Playgama |
true |
false |
VK |
true |
true |
OK |
true |
true |
Yandex |
true |
true |
Crazy Games |
true |
false |
Absolute Games |
true |
true |
Game Distribution |
true |
false |
VK Play |
true |
false |
Mock |
true |
false |
Проверка на доступность #
Bridge.storage.IsAvailable(StorageType.LocalStorage)
Bridge.storage.IsAvailable(StorageType.PlatformInternal)
Платформа | LocalStorage | PlatformInternal |
---|---|---|
Playgama |
true |
false |
VK |
true |
true |
OK |
true |
Если игрок дал доступ —
true , если нет —
false |
Yandex |
true |
Если игрок авторизован —
true , если нет —
false |
Crazy Games |
true |
false |
Absolute Games |
true |
Если игрок авторизован —
true , если нет —
false |
Game Distribution |
true |
false |
VK Play |
true |
false |
Mock |
true |
false |
Загрузка данных #
// Получить данные по ключу
private void Start()
{
Bridge.storage.Get("level", OnStorageGetCompleted);
}
private void OnStorageGetCompleted(bool success, string data)
{
// Загрузка произошла успешно
if (success)
{
if (data != null)
{
Debug.Log(data);
}
else
{
// Данных по ключу level нет
}
}
else
{
// Ошибка, что-то пошло не так
}
}
// Получить данные по нескольким ключам
private void Start()
{
Bridge.storage.Get(new List<string>() { "level", "coins" }, OnStorageGetCompleted);
}
private void OnStorageGetCompleted(bool success, List<string> data)
{
// Загрузка произошла успешно
if (success)
{
if (data[0] != null)
{
Debug.Log($"Level: {data[0]}");
}
else
{
// Данных по ключу level нет
}
if (data[1] != null)
{
Debug.Log($"Coins: {data[1]}");
}
else
{
// Данных по ключу coins нет
}
}
else
{
// Ошибка, что-то пошло не так
}
}
// Получить данные из конкретного хранилища
private void Start()
{
Bridge.storage.Get("level", OnStorageGetCompleted, StorageType.LocalStorage);
}
private void OnStorageGetCompleted(bool success, string data)
{
// Загрузка произошла успешно
if (success)
{
if (data != null)
{
Debug.Log(data);
}
else
{
// Данных по ключу level нет
}
}
else
{
// Ошибка, что-то пошло не так
}
}
Сохранение данных #
// Сохранить данные по ключу
private void Start()
{
Bridge.storage.Set("level", "dungeon_123", OnStorageSetCompleted);
}
private void OnStorageSetCompleted(bool success)
{
Debug.Log($"OnStorageSetCompleted, success: {success}");
}
// Сохранить данные по нескольким ключам
private void Start()
{
var keys = new List<string>() { "level", "is_tutorial_completed", "coins" };
var data = new List<object>() { "dungeon_123", true, 12 };
Bridge.storage.Set(keys, data, OnStorageSetCompleted);
}
// Сохранить данные в конкретное хранилище
private void Start()
{
Bridge.storage.Set("level", "dungeon_123", OnStorageSetCompleted, StorageType.LocalStorage);
}
Удаление данных #
// Удалить данные по ключу
private void Start()
{
Bridge.storage.Delete("level", OnStorageDeleteCompleted);
}
private void OnStorageDeleteCompleted(bool success)
{
Debug.Log($"OnStorageDeleteCompleted, success: {success}");
}
// Удалить данные по нескольким ключам
private void Start()
{
var keys = new List<string>() { "level", "is_tutorial_completed", "coins" };
Bridge.storage.Delete(keys, OnStorageDeleteCompleted);
}
// Удалить данные из конкретного хранилища
private void Start()
{
Bridge.storage.Delete("level", OnStorageDeleteCompleted, StorageType.LocalStorage);
}
Если при работе с данными не передавать третьим аргументом тип хранилища, то используется тип хранилища по умолчанию Bridge.storage.defaultType
.
Реклама #
Banner #
Поддерживается ли баннер #
Bridge.advertisement.isBannerSupported
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex |
true |
Crazy Games |
true |
Absolute Games |
false |
Game Distribution |
true |
VK Play |
false |
Mock |
false |
📝 Примечание
Чтобы баннеры работали в Yandex — необходимо их включить в настройках игры.
Показать баннер #
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "vk":
options.Add("position", "bottom");
options.Add("layoutType", "resize");
options.Add("canClose", false);
break;
}
Bridge.advertisement.ShowBanner(options);
}
Скрыть баннер #
Bridge.advertisement.HideBanner()
Состояние баннера #
Bridge.advertisement.bannerState
Текущее состояние баннера. Возможные значения: Loading
, Shown
, Hidden
, Failed
.
// Отслеживать изменение состояния можно подписавшись на событие
private void Start()
{
Bridge.advertisement.bannerStateChanged += OnBannerStateChanged;
}
private void OnBannerStateChanged(BannerState state)
{
Debug.Log(state);
}
Interstitial #
Межстраничная реклама. Обычно показывается в момент загрузки уровня/поражения и т.д.
Минимальный интервал между показами #
// Значение по умолчанию = 60 секунд
Bridge.advertisement.minimumDelayBetweenInterstitial
Между показами Interstitial-рекламы нужно соблюдать временные интервалы. Например, Yandex просто не покажет рекламу если вызывать слишком часто, а VK будет показывать так часто, как вызывается метод.
Для удобства, в данном SDK есть встроенный механизм таймера между показами. Вам нужно лишь указать нужный интервал и можно дёргать метод показа рекламы сколько угодно.
private void Start()
{
// Установить минимальный интервал
Bridge.advertisement.SetMinimumDelayBetweenInterstitial(30);
}
Состояние рекламы #
Bridge.advertisement.interstitialState
Текущее состояние рекламы. Возможные значения: Loading
, Opened
, Closed
, Failed
.
// Отслеживать изменение состояния можно подписавшись на событие
private void Start()
{
Bridge.advertisement.interstitialStateChanged += OnInterstitialStateChanged;
}
private void OnInterstitialStateChanged(InterstitialState state)
{
Debug.Log(state);
}
📝 Примечание
Нужно реагировать на изменение состояния рекламы. Например, выключать звук в игре приOpened
и включать приClosed
иFailed
.
Показать рекламу #
private void Start()
{
Bridge.advertisement.ShowInterstitial();
}
Rewarded #
Реклама за вознаграждение.
Состояние рекламы #
Bridge.advertisement.rewardedState
Текущее состояние рекламы. Возможные значения: Loading
, Opened
, Closed
, Rewarded
, Failed
.
// Отслеживать изменение состояния можно подписавшись на событие
private void Start()
{
Bridge.advertisement.rewardedStateChanged += OnRewardedStateChanged;
}
private void OnRewardedStateChanged(RewardedState state)
{
Debug.Log(state);
}
📝 Примечание
Нужно реагировать на изменение состояния рекламы. Например, выключать звук в игре приOpened
и включать приClosed
иFailed
.
⚠️ Предупреждение
Награду игроку нужно выдавать только при наступлении состоянияRewarded
.
Показать рекламу #
Bridge.advertisement.ShowRewarded()
Социальные взаимодействия #
Поделиться #
Bridge.social.isShareSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
false |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "vk":
options.Add("link", "https://vk.com/mewton.games");
break;
}
Bridge.social.Share(options, OnShareCompleted);
}
private void OnShareCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Вступить в сообщество #
Bridge.social.isJoinCommunitySupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgame |
false |
VK |
true |
OK |
true |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "vk":
options.Add("groupId", 199747461);
break;
case "ok":
options.Add("groupId", 62984239710374);
break;
}
Bridge.social.JoinCommunity(options, OnJoinCommunityCompleted);
}
private void OnJoinCommunityCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Пригласить друзей #
Bridge.social.isInviteFriendsSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "ok":
options.Add("text", "Hello World!");
break;
}
Bridge.social.InviteFriends(options, OnInviteFriendsCompleted);
}
private void OnInviteFriendsCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Опубликовать пост #
Bridge.social.isCreatePostSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
true |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "vk":
options.Add("message", "Hello World!");
options.Add("attachments", "photo-199747461_457239629");
break;
case "ok":
var media = new object[]
{
new Dictionary<string, object>
{
{ "type", "text" },
{ "text", "Hello World!" },
},
new Dictionary<string, object>
{
{ "type", "link" },
{ "url", "https://apiok.ru" },
},
new Dictionary<string, object>
{
{ "type", "poll" },
{ "question", "Do you like our API?" },
{
"answers",
new object[]
{
new Dictionary<string, object>
{
{ "text", "Yes" },
},
new Dictionary<string, object>
{
{ "text", "No" },
}
}
},
{ "options", "SingleChoice,AnonymousVoting" },
},
};
options.Add("media", media);
break;
}
Bridge.social.CreatePost(options, OnCreatePostCompleted);
}
private void OnCreatePostCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Добавить в избранное #
Bridge.social.isAddToFavoritesSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
false |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
Bridge.social.AddToFavorites(OnAddToFavoritesCompleted);
}
private void OnAddToFavoritesCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Добавить на рабочий стол #
Bridge.social.isAddToHomeScreenSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK | Android:
true .Desktop, iOS: false . |
OK |
false |
Yandex |
true /
false Доступность опции зависит от девайса игрока, внутренних правил браузера и ограничений платформы. |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
Bridge.social.AddToHomeScreen(OnAddToFavoritesCompleted);
}
private void OnAddToHomeScreenCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Оценить игру #
Bridge.social.isRateSupported
Поддерживается ли функционал на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
true |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
Bridge.social.Rate(OnRateCompleted);
}
private void OnRateCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Внешние ссылки #
Bridge.social.isExternalLinksAllowed
Разрешены ли внешние ссылки на платформе.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true |
OK |
false |
Yandex |
false |
Crazy Games |
true |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
Лидерборды #
Поддержка #
Bridge.leaderboard.isSupported
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
true* |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
⚠️ Предупреждение
* В VK с клиента можно только показать нативный popup, для всего остального потребуется свой сервер.
Нативный popup #
Bridge.leaderboard.isNativePopupSupported
Поддерживается ли нативный popup.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK | Android, iOS, Mobile Web:
true Desktop: false |
OK |
false |
Yandex |
false |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "vk":
options.Add("userResult", 42);
options.Add("global", true);
break;
}
Bridge.leaderboard.ShowNativePopup(options, OnShowNativePopupCompleted);
}
private void OnShowNativePopupCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Очки игрока #
Запись #
Bridge.leaderboard.isSetScoreSupported
Поддерживается ли запись очков игрока с клиента.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("score", 42);
options.Add("leaderboardName", "YOUR_LEADERBOARD_NAME");
break;
}
Bridge.leaderboard.SetScore(options, OnSetScoreCompleted);
}
private void OnSetScoreCompleted(bool success)
{
if (success)
{
// Операция прошла успешно
}
else
{
// Произошла ошибка
}
}
Чтение #
Bridge.leaderboard.isGetScoreSupported
Поддерживается ли чтение очков игрока.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("leaderboardName", "YOUR_LEADERBOARD_NAME");
break;
}
Bridge.leaderboard.GetScore(options, OnGetScoreCompleted);
}
private void OnGetScoreCompleted(bool success, int score)
{
if (success)
{
// Данные успешно получены
Debug.Log(score);
}
else
{
// Что-то пошло не так
}
}
Записи таблицы #
Bridge.leaderboard.isGetEntriesSupported
Поддерживается ли чтение полной таблицы.
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("leaderboardName", "YOUR_LEADERBOARD_NAME");
options.Add("includeUser", true);
options.Add("quantityAround", 10);
options.Add("quantityTop", 10);
break;
}
Bridge.leaderboard.GetEntries(options, OnGetEntriesCompleted);
}
private void OnGetEntriesCompleted(bool success, List<LeaderboardEntry> entries)
{
if (success)
{
foreach (var entry in entries)
{
Debug.Log($"Entry: id = {entry.id}, name = {entry.name}, rank = {entry.rank}, score = {entry.score}");
foreach (var photo in entry.photos)
{
Debug.Log($"Entry {entry.id} photo {photo}");
}
}
}
}
Внутриигровые покупки #
Существуют два типа покупок — постоянные (например, отключение рекламы) и расходуемые (например, внутриигровые монеты).
Поддержка #
Bridge.payments.isSupported
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
Покупка #
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("id", "PURCHASE_ID");
break;
}
Bridge.payments.Purchase(options, OnPurchaseCompleted);
}
private void OnPurchaseCompleted(bool success)
{
Debug.Log(success);
}
Расходование #
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
options.Add("purchaseToken", "PURCHASE_TOKEN");
break;
}
Bridge.payments.ConsumePurchase(options, OnConsumePurchaseCompleted);
}
private void OnConsumePurchaseCompleted(bool success)
{
Debug.Log(success);
}
Каталог всех товаров #
private void Start()
{
Bridge.payments.GetCatalog(OnGetCatalogCompleted);
}
private void OnGetCatalogCompleted(bool success, List<PaymentsCatalogItemData> catalog)
{
if (success)
{
foreach (var catalogItemData in catalog)
{
Debug.Log($"ID: {catalogItemData.id}");
Debug.Log($"title: {catalogItemData.title}");
Debug.Log($"description: {catalogItemData.description}");
Debug.Log($"icon: {catalogItemData.icon}");
Debug.Log($"price: {catalogItemData.price}");
Debug.Log($"priceValue: {catalogItemData.priceValue}");
Debug.Log($"priceCurrencyCode: {catalogItemData.priceCurrencyCode}");
}
}
}
Список купленных товаров #
private void Start()
{
Bridge.payments.GetPurchases(OnGetPurchasesCompleted);
}
private void OnGetPurchasesCompleted(bool success, List<PaymentsPurchaseData> purchases)
{
if (success)
{
foreach (var purchaseData in purchases)
{
Debug.Log($"ID: {purchaseData.id}");
Debug.Log($"token: {purchaseData.token}");
}
}
}
Удаленная конфигурация #
С помощью удаленной конфигурации вы можете управлять настройками вашей игры не выпуская обновлений.
Поддержка #
Bridge.remoteConfig.isSupported
Платформа | Возможные значения |
---|---|
Playgama |
false |
VK |
false |
OK |
false |
Yandex |
true |
Crazy Games |
false |
Absolute Games |
false |
Game Distribution |
false |
VK Play |
false |
Mock |
false |
Загрузка значений #
private void Start()
{
var options = new Dictionary<string, object>();
switch (Bridge.platform.id)
{
case "yandex":
var clientFeatures = new object[]
{
new Dictionary<string, object>
{
{ "name", "levels" },
{ "value", "5" },
}
};
options.Add("clientFeatures", clientFeatures);
break;
}
Bridge.remoteConfig.Get(options, OnRemoteConfigGetCompleted);
}
private void OnRemoteConfigGetCompleted(bool success, List<RemoteConfigValue> data)
{
if (success)
{
foreach (var remoteConfigItem in data)
{
Debug.Log($"name: {remoteConfigItem.name}, value: {remoteConfigItem.value}");
}
}
}