Как сделать сборку проекта 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-сборки без учёта различий некорректно.
Сделайте первую сборку
- Убедитесь, что Console не содержит ошибок компиляции.
- Проверьте активный профиль и стартовую сцену.
- Нажмите Build либо Build And Run.
- Выберите отдельную папку, например Builds/WindowsTest, вне Assets. Не записывайте приложение поверх исходных файлов проекта.
- Дождитесь завершения и запустите результат.
В 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.
После исправления повторите тот же сценарий. Готовая сборка должна быть воспроизводимой: команда знает настройки, сцены, зависимости и способ получить результат из сохранённого проекта.