Сборка билда: Windows, WebGL и Android

Игра живёт в редакторе только у тебя. Чтобы в неё сыграли другие, её собирают в билд — самостоятельную программу. Это финальный шаг.

Суть: сборка (build) превращает проект в запускаемую программу под конкретную платформу: .exe для Windows, страницу для браузера (WebGL), .apk для Android. Делается через Build Settings: выбираешь платформу, добавляешь сцены, настраиваешь имя и иконку в Player Settings и жмёшь Build.

Пока игра в редакторе, в неё играешь только ты через кнопку Play. Чтобы поделиться, нужно собрать билд — Unity скомпилирует проект в отдельную программу, которая запустится без редактора. Для каждой платформы свой формат: Windows — .exe, браузер — WebGL-страница, телефон — .apk.

Открываешь File → Build Settings. Слева — список платформ; выбери нужную и нажми Switch Platform (для Android и WebGL нужны установленные модули из Unity Hub). Сверху — список сцен в сборке: добавь все сцены игры в правильном порядке (сцена с индексом 0 загружается первой).

Как работает под капотом

Конвейер сборки:

  Твой проект (Assets)
        |
  [выбор платформы] -> Windows / WebGL / Android
        |
  [список сцен]     -> index 0 грузится первой
        |
  [Player Settings] -> имя, иконка, разрешение, ориентация
        |
  [Build]           -> компиляция кода + упаковка ассетов
        |
        v
  Готовый билд: MyGame.exe / index.html / MyGame.apk

В Player Settings задают название продукта, компанию, иконку, стартовое разрешение. Для WebGL — размер канваса, для Android — ориентацию экрана и минимальную версию системы.

Часть сборки — выбор сцен и порядок их загрузки. Смоделируем валидацию списка сцен билда на Python:

# Список сцен в сборке: имя и индекс. Сцена 0 грузится первой
build_scenes = [
    {"name": "MainMenu", "enabled": True},
    {"name": "Level1",   "enabled": True},
    {"name": "Level2",   "enabled": True},
    {"name": "TestScene","enabled": False},   # отключена, в билд не пойдёт
]

active = [s for s in build_scenes if s["enabled"]]
for i, s in enumerate(active):
    first = " (грузится первой)" if i == 0 else ""
    print(f"index {i}: {s['name']}{first}")

# Проверим, что игрок пытается загрузить существующую сцену
def can_load(name):
    return any(s["name"] == name and s["enabled"] for s in build_scenes)

print("Загрузить Level2?", can_load("Level2"))
print("Загрузить TestScene?", can_load("TestScene"))   # отключена -> нельзя

Та же логика на Python ▶ — в билд попадают только включённые сцены, и порядок задаёт, какая загрузится первой. Если попытаться загрузить сцену, которой нет в сборке, игра упадёт с ошибкой — поэтому список сцен проверяют заранее.

Частые ошибки

  • Забыть добавить сцены. Самая частая ошибка релиза: игра собралась, но LoadScene не находит уровень — его нет в Build Settings.
  • Неправильный порядок сцен. Если уровень оказался под индексом 0 вместо меню, игра стартует не с того экрана.
  • Не поставить модуль платформы. Без модуля Android или WebGL из Hub соответствующую платформу не выбрать.
  • Тяжёлые ассеты в WebGL. Браузерный билд должен быстро грузиться; огромные текстуры и звуки делают загрузку мучительной — сжимай ассеты.

Best practices

  • Добавь все сцены в Build Settings и проверь, что меню под индексом 0.
  • Перед релизом собери Development Build и протести: поведение билда иногда отличается от редактора.
  • Заполни Player Settings: имя, иконку, компанию — это лицо твоей игры.
  • Для WebGL сжимай текстуры и звук, для Android выбери целевую архитектуру и проверь ориентацию экрана.

Итоги: сборка превращает проект в самостоятельную программу под платформу (exe / WebGL / apk) через Build Settings. Добавь все сцены (индекс 0 грузится первым), настрой Player Settings, поставь модуль платформы и протести билд перед публикацией. Поздравляем — теперь твоя игра может жить за пределами редактора и в неё сыграют другие.

Что ещё проверить перед публикацией

Собрать билд — половина дела; вторая половина в том, чтобы он работал на чужих машинах, а не только на твоей. Слабые места всплывают именно в билде. WebGL-сборка не умеет писать файлы как настольная и медленнее с тяжёлыми ассетами — сжимай текстуры и звук, иначе страница будет грузиться минуту. Android требует подписи приложения и правильно выбранной целевой архитектуры, иначе магазин не примёт пакет. На любой платформе обязательно собери Development Build и пройди игру: поведение часто отличается от редактора — где-то выстреливает скорость загрузки, где-то путь к файлу. И не забудь про мелочи, которые формируют первое впечатление: иконка, имя продукта, экран загрузки. Игрок не видит твой код, он видит ярлык и первую секунду запуска — пусть они выглядят так, будто игру делали всерьёз.

Проверьте себя
1. Что делает «сборка» (build) проекта Unity?
AУдаляет все ошибки
BПревращает проект в самостоятельную программу под платформу (exe, WebGL, apk)
CУскоряет редактор
DСоздаёт новый проект
2. Что произойдёт, если сцена не добавлена в Build Settings, а код вызывает её LoadScene?
AСцена всё равно загрузится
BИгра упадёт с ошибкой — сцены нет в сборке
CЗагрузится первая сцена
DНичего не изменится