Unity SDK
Основной SDK MAJACLOUD: C# для Unity с API на async/await и корутинах, окном настройки и примером Starter.
Комментарии в коде и имена API оставлены на английском, чтобы совпадать с SDK.
Требования#
- Unity 2021.3 LTS или новее, включая Unity 6. Подходят встроенный конвейер рендеринга, URP и HDRP: в SDK нет кода рендеринга.
- Только встроенные модули Unity (UnityWebRequest, JSON, uGUI). В примере используется TextMesh Pro.
- Редактор, Windows, macOS, Linux, Android, iOS и WebGL. Потоки не используются, поэтому async/await безопасен в WebGL. Совместим с IL2CPP.
Установка#
- Скачайте
.unitypackageна странице проекта или на странице загрузок. - В Unity: Assets ▸ Import Package ▸ Custom Package…, выберите файл и импортируйте всё.
- Когда Unity предложит импортировать TMP Essentials для примера, согласитесь.
Всё находится в Assets/Majacloud: Runtime (сам SDK), Editor (инструменты настройки), Samples/Starter и Tests.
Подключение проекта#
Tools ▸ Majacloud ▸ Setup (также доступно в Project Settings ▸ Majacloud) записывает Assets/Resources/MajacloudSettings.asset. SDK инициализируется из этого файла до загрузки первой сцены.
| Поле | Значение |
|---|---|
| Base URL | Адрес этой установки. https://majacloud.majanite.com |
| Project ID | Панель управления ▸ API-ключи. |
| Client Key | Публичный ключ, начинающийся с pk_live_. Его можно включать в сборки. |
Test connection сохраняет название проекта, тариф и публичный ключ удалённой конфигурации, который закрепляет проверку подписи за вашим сервером.
sk_live_…) в сборку игры или на веб-страницу. Всё, что попадает к игрокам, можно прочитать.Настройка из кода#
Создавайте настройки во время выполнения — например, чтобы направить dev-сборки на тестовый сервер:
// Switch environments from code (e.g. a staging server in development builds)
var settings = ScriptableObject.CreateInstance<MajacloudSettings>();
settings.Configure("https://staging.yourstudio.com", "<project id>", "pk_live_…");
Majacloud.Initialize(settings);Async и корутины#
У каждого асинхронного метода (…Async) есть парный вариант для корутин, принимающий колбэк, — для кода без async/await.
// Every async method has a coroutine version with a callback
StartCoroutine(Majacloud.Leaderboards.GetTop("coins", 10, result =>
{
if (result.Ok) Debug.Log(result.Value.Total + " players");
}));Пример Starter#
В Samples/Starter/Scenes/MajacloudStarter.unity пять вкладок: Leaderboard, Cloud save, Rewards, Config и Account. Сцене нужен контент, который создаёт параметр Добавить контент примера Starter.
Готовые префабы в Samples/Starter/Prefabs: MajacloudLeaderboardView, MajacloudPlayerBadge и MajacloudDailyRewardButton. Добавьте их в свой интерфейс и укажите в инспекторе слаг или ключ награды.
WebGL и мобильные платформы#
- Отдавайте сборки WebGL по HTTPS: браузеры блокируют запросы
http://со страницhttps://. API уже отправляет заголовки CORS, которые нужны WebGL. - Браузеры открывают новые вкладки только по клику. Для привязки аккаунта в WebGL сначала запустите процесс, а затем откройте страницу в обработчике нажатия кнопки (см. Игроки).
- Для тестов на телефоне с сервером на вашем компьютере тоже нужен HTTPS (или, только для разработки,
ALLOW_INSECURE_HTTPна сервере и разрешённые HTTP-загрузки в Player Settings).
Меню редактора#
| Пункт меню | Что делает |
|---|---|
Tools ▸ Majacloud ▸ Setup | Ключи, проверка подключения и настройки поведения. |
Tools ▸ Majacloud ▸ Open Starter Sample | Открывает сцену Starter. |
Tools ▸ Majacloud ▸ Rebuild Starter Sample | Заново генерирует сцену Starter и префабы. |
Tools ▸ Majacloud ▸ Export .unitypackage | Экспортирует SDK в .unitypackage. |