TGViewer
SpellSinger - разработчик игр на Unity SpellSinger - разработчик игр на Unity @spellsingergames · 548 subscribers
Post #131 914
Автоматическая сборка билдов под разные платформы и площадки

Как обычно, кратко описываю суть, подробности спрашивайте в комментах.

1️⃣ На каждую площадку и тип сборки я сделал по отдельной кнопки в меню:
[MenuItem("Build/Yandex")]
public static void BuildYandex()
{
BuildYandex(BuildOptions.None);
}

[MenuItem("Build/Yandex [Dev]")]
public static void BuildYandexDev()
{
BuildYandex(BuildOptions.Development);
}


2️⃣ Есть основной метод Build, который непосредственно запускает сборку в Unity.
var buildPlayerOptions = new BuildPlayerOptions
{
scenes = new[] { "Assets/Scenes/Initialization Scene.unity" },
locationPathName = locationPathName,
target = buildTarget,
options = BuildOptions.CompressWithLz4 | buildOptions,
extraScriptingDefines = extraScriptingDefines.ToArray()
};

var report = BuildPipeline.BuildPlayer(buildPlayerOptions)


В него передаются параметры сборки, специфичные для каждой площадки. Например:
private static void BuildYandex(BuildOptions buildOptions)
{
Build(PlatformType.Yandex, new List<string> { "PLATFORM_YANDEX" }, BuildTarget.WebGL, "Build/Yandex", buildOptions);
}

Здесь
▶️ PlatformType.Yandex – это мой enum со всеми площадками
▶️ new List<string> { "PLATFORM_YANDEX" } – это Scripting Define, в эту штуку я оборачиваю код, специфичный только для Яндекса ( ещё могу передать SHOWCASE – код для шоукейсов)
▶️ BuildTarget.WebGL – непосредственно платформа
▶️ "Build/Yandex" – целевая папка для билда
▶️ buildOptions – необходимые опции, например Development

3️⃣ Есть класс с конфигами для каждой платформы
[Serializable]
public class PlatformConfig
{
[field: SerializeField] public string ProductName { get; private set; } = "drill_and_dig";
[field: SerializeField] public Monetization Monetization { get; private set; } = Monetization.Free2Play;
[field: SerializeField] public AdBackend AdBackend { get; private set; } = AdBackend.None;
[field: SerializeField] public string SupportUrl { get; private set; } = "mailto:support@honeycombs.games";
...

В рантайме нужный конфиг определяется на основе Scripting Defines
[UsedImplicitly]
public PlatformType GetTypeProd()
{
#if PLATFORM_YANDEX
return PlatformType.Yandex;
#elif PLATFORM_VK_PLAY_DEMO
return PlatformType.VkPlayDemo;
...

и в коде я использую эти настройки через методы в статическом классе Platform:
if (Platform.IsF2P())
{
adManager.ShowRewarded(rewarded =>
{
if (rewarded) Fire();
}, type.ToString());
}
else
{
itemsCount.Coins().ApplyChange(-GetCost());
Fire();
}


4️⃣ Это все основные моменты. Кроме этого, у меня автоматизировано:
1) Автоматическое вписывание версии игры в конфиги аналитики и в настройки Unity.
2) Хак для Text Mesh Pro, чтобы шрифт не попадал в основной билд, а подгружался через Addressables
3) Проверка цепочек квестов на правильность.
4) Определение, подключен ли телефон к компу, чтобы сразу запустить на нем билд.
5) Исключение библиотек из Андроид зависимостей в зависимости от площадки (RuStore/Google Play)
6) В dev режиме доступна панель разработчика с читерскими кнопками (и отключены лидерборды)
7) На Андроиде, если собираю в dev режиме, игра собирается в Mono, а не IL2CPP, т. к. в Mono билд собирается в пять раз быстрее.
8) На Андроиде автоматически вписывается пароль для кейстора (Unity его не сохраняет)
9) Подключаю разные JS SDK (Яндекс/ВКонтакте)

Если что-то непонятно или про что-то нужно рассказать подробнее, спрашивайте.

#самый_крутяк
  • 🔥 18
More from @spellsingergames
  1. Oct 1, 2026Автор
  2. Aug 31, 2026Post #235
  3. Aug 25, 2026Прошли модерацию на Crazy Games. Basic Launch продлится до 15 сентября или пока не наберет…
  4. Aug 24, 2026А мы, тем временем, идём покорять #crazy_games Вчера ночью отправили билд на модерацию. Мо…
  5. Aug 24, 20262 недели нужно рекоммендеру Яндекс игр, чтобы как-то отреагировать на изменения метрик. AR…
  6. Aug 14, 2026Шестой эпизод подкаста ГЕЙМДЕВ ПОД ПИВОМ уже во вторник, в 22:30МСК! Хорошенечко отоспитес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →