Как сделать сборку проекта Unity и проверить игру без редактора

Play проверяет игру внутри Editor. Build создаёт приложение для целевой платформы. Между ними есть различия: доступность файлов, компиляция кода, разрешения, производительность и включённые сцены. Поэтому первую сборку полезно сделать в начале проекта.

Разберём процесс на Unity 6 и desktop-сборке, затем рассмотрим типичные причины, почему игра работает в редакторе и ломается после экспорта.

ТОП-5 курсов обучения Unity:

Подготовьте платформу и сцены

Установите build support для нужной платформы в Hub у конкретного Editor. Переключение платформы в проекте не скачивает автоматически все отсутствующие инструменты.

Сохраните стартовую сцену. В Unity 6 откройте File → Build Profiles. Название отличается от Build Settings в старых уроках. Выберите или создайте профиль нужной платформы и сделайте его активным.

Проверьте Scene List: сцены должны быть добавлены и включены. Если профиль использует собственный список вместо общего, проверяйте именно активный список. Первая включённая сцена обычно служит точкой старта. Устройство списка описано в документации.

Проверьте базовые настройки Player

Откройте Player Settings и задайте имя компании, продукта и необходимые платформенные параметры. Проверьте ориентацию или оконный режим, систему ввода и backend. Не меняйте одновременно все настройки ради устранения одной ошибки.

Mono и IL2CPP имеют разные способы компиляции. Выбор зависит от поддерживаемой платформы и требований проекта. Переключение backend может выявить несовместимость библиотек, поэтому нужный вариант стоит проверить до финальной подготовки.

Development Build полезен для диагностики, Script Debugging — для подключения отладчика. Для итогового выпуска эти настройки выбираются отдельно. Сравнивать производительность диагностической и release-сборки без учёта различий некорректно.

Сделайте первую сборку

  1. Убедитесь, что Console не содержит ошибок компиляции.
  2. Проверьте активный профиль и стартовую сцену.
  3. Нажмите Build либо Build And Run.
  4. Выберите отдельную папку, например Builds/WindowsTest, вне Assets. Не записывайте приложение поверх исходных файлов проекта.
  5. Дождитесь завершения и запустите результат.

В desktop-варианте передавайте полный результат сборки: исполняемый файл, data-папку и сопровождающие библиотеки, которые создала Unity. Один EXE часто недостаточен. Для удобной передачи упакуйте всю папку.

На других платформах результат отличается. Web-сборка требует корректного размещения на веб-сервере; Android использует APK или AAB. Отдельный порядок Android разобран в соответствующей статье.

Проверьте пользовательский сценарий

Запустите игру без активного Play. Пройдите старт, управление, победу или поражение, повторный запуск и выход. При наличии сохранений перезапустите приложение и проверьте восстановление данных.

Испытайте сборку на другом компьютере или чистом пользовательском окружении, если это возможно. Проверьте отсутствие зависимости от пути к вашему Project, IDE или файлов в Downloads.

Меняйте размер окна и выбранные устройства ввода. Если игра показывает первое меню, это ещё не означает, что второй уровень и сохранение работают.

Почему в сборке пропадает сцена или ресурс

Обычная загрузка SceneManager требует доступной сцены: чаще всего она должна присутствовать во включённом списке сборки. Проверьте имя, путь и список активного профиля. Сам факт наличия scene asset в Project не доказывает её включение.

Ресурс может не попасть в используемую систему загрузки или иметь другой путь. Не обращайтесь в runtime к Assets/MyFile.txt как к гарантированному обычному файлу. В сборке организация данных зависит от платформы и способа включения.

Для пользовательских записываемых данных используйте подходящие платформенные пути, например persistentDataPath. StreamingAssets имеет отдельные правила доступа, особенно на Android и Web. Сначала определите, где находится файл и каким API его следует читать.

Ошибки компиляции и stripping

Код с UnityEditor не должен попадать в обычную runtime-сборку. Размещайте редакторные инструменты в Editor-папках или соответствующих assemblies и используйте платформенные условия там, где они нужны.

Если система использует reflection или динамический доступ к типам, managed stripping способен удалить то, что не обнаружено как необходимое. Решение — документированное сохранение нужных типов и проверка используемого SDK, а не бессистемное отключение всех оптимизаций.

IL2CPP также требует учитывать AOT-ограничения библиотек. Описание backend есть в официальной документации.

Где искать причину неудачной сборки

Начните с первой содержательной ошибки, а не финальной строки «Build failed». Ошибка SDK, компиляции C# и импорта asset имеют разные причины. Сохраните полный лог и точный номер Editor, активную платформу и backend.

Если приложение запускается и падает, читайте Player.log или платформенный лог. Если не создаётся вообще — Editor.log и сообщения процесса сборки. Расположение логов разобрано в статье о логах Unity.

После исправления повторите тот же сценарий. Готовая сборка должна быть воспроизводимой: команда знает настройки, сцены, зависимости и способ получить результат из сохранённого проекта.

Документация