Приветствую всех друзья! В прошлой статье были рассмотрены типичные проблемы и способы их решения при работе с кроссплатформенными приложениями, создаваемыми на Unity. Сегодня мы рассмотрим окно создания билда. Билд – это собранная из ресурсов вашего проекта готовая игра, ее конечное представление зависит от платформы, на которую вы его собираете. Например для Android это будет файл с расширением .apk, а для ПК (персонального компьютера) это будет папка с файлами в корне которой будет лежать файл с названием вашей игры и расширением .exe. Но помимо этого также будут рассмотрены такие вещи как уменьшение размера билда, и конвейер создания билда (крайне кратко).
Окно настройки сборки содержит все настройки и параметры, необходимые для создания билда на различные платформы. Из этого окна можно создать билд разработчика (development build) чтобы протестировать ваше приложение, а также сделать финальный билд который можно будет публиковать в магазины приложений. Чтобы настроить параметры билда вашего приложения перейдите в контекстное меню File\Build Settings.
Используйте панель Scenes in Build для управления тем, какие сцены попадут в ваш билд. Просто поставьте галочку напротив сцены, которая должна попасть в билд. В разделе Platform вы можете выбрать на какую платформу вы хотите сделать билд, а также здесь можно настроить параметры билда, например, выбрать метод сжатия данных (Compression Method). Ниже я кратко раскрою для чего нужны остальные параметры сверху вниз:
- Target Platform – это платформа на которую будет сделан билд
- Architecture – как вы знаете существуют 32х разрядные и 64х разрядные процессоры, так вот с помощью этой настройки мы можем выбрать на какую разрядность делать билд
- Server Build – при переключении данного чекбокса Unity создаст билд для сервера, который не имеет графики, а также будет использовать платформозависимый определитель UNITY_SERVER для кода. Если мы с такой галочкой сделаем билд для Windows он будет работать как консольное приложение.
- Copy PDB files – при включении данного чекбокса Unity при билде на ПК включит в него PDB файлы. Файлы PDB содержат информацию об отладке приложения, которая полезна для отладки, но при этом она увеличивает размер вашего билда.
- Create Visual Studio Solution – данный чекбокс при включении создаст файлы решения для вашего проекта, чтобы вы могли создать окончательный исполняемый файл в Visual Studio.
- Development Build – данный чекбокс при включении активирует отладку и профилировку в билде. Используйте этот параметр, когда хотите протестировать свое приложение.
- Autoconnect Profiler – этот чекбокс можно включить только при включенном Development Build. Когда этот параметр активирован профайлер Unity (о нем еще будет статья, если вкратце то нужен для просмотра и отладки работы приложения) будет автоматически подключаться к билду и профилировать его.
- Deep Profiling – этот чекбокс также можно включить только при активном Development Build. Он автоматически подключает глубокую профилировку в профайлере. Эта функция позволяет более глубоко исследовать ваше приложение, но при этом работа всех скриптов и всего приложения будет замедленна.
- Script Debugging – этот чекбокс также можно включить только при активном Development Build. Это позволяет вам отлаживать свой код. Эта функция не доступна на WebGL.
- Scripts Only Build – Запустите сборку билда чтобы проверить изменились ли скрипты. Для этого проект уже должен быть собран хотя бы один раз.
- Compression Method – Выше я уже писал об этом – позволяет выбрать метод компрессии (сжатия) игровых ресурсов.
Для создания билда нажмите на кнопку Build – после чего Unity предложит выбрать место хранения и имя билда (хранить билд в папке Assets нельзя), затем начнется процесс сборки билда. Кнопка Build And Run создаст билд после чего сразу запустит его на платформе (то есть если у вас, например, билд на Android, то телефон должен быть подключен к компьютеру, после того как билд будет собран Unity установит его на устройство).
Важно свести размер файла билда к минимуму, особенно для мобильных устройств, так как обычно магазины приложений для мобильных накладывают ограничения на размер билда. Первым шагом в уменьшении размера является определение того, какие ресурсы вносят в него наибольший вклад, поскольку именно эти ресурсы являются наиболее вероятными кандидатами на оптимизацию. Эта информация доступна в логе редактора сразу после выполнения сборки билда. Перейдите в окно консоли (если оно у вас не открыто, то откройте его по следующему пути в контекстном меню Window\General\Console), нажмите на небольшой выпадающий список в правом верхнем углу и выберите пункт Open Editor Log.
Журнал редактора показанный выше предоставляет сводку ассетов по категориям, а также показывает какое процентное соотношение по памяти занимает тот или иной тип. После чего он начинает в порядке убывания перечислять от самого большого к самому маленькому ресурсы в игре. Обычно текстуры/звуки/анимации весят много в то время как скрипты/уровни/шейдера мало. Также не забывайте, что все ресурсы игры, хранящиеся в папке Resources (что это за папка, для чего она нужна и как с ней работать я еще опишу в своей будущей статье) будут добавлены в итоговый билд.
Журнал редактора поможет вам определить какие именно ресурсы необходимо оптимизировать или удалить, но перед началом работы вам следует помнить о следующем:
- Во время сборки билда Unity кодирует импортированные ресурсы (например, текстуры) в свои внутренние форматы, поэтому для работы выбирайте формат файла, с которым вам удобно работать (например, png).
- Unity удаляет большинство неиспользуемых ресурсов во время сборки, поэтому вы ничего не получите вручную, удалив их из проекта. Единственные ресурсы, которые Unity удалить не может это скрипты и файлы, хранящиеся в папке Resources (потому как Unity не знает какие файлы из этой папки будут использованы вами во время работы игры, а какие нет). Имея это ввиду вы всегда должны держать ресурсы в папке Resources имеющие отношение к самой игре – остальные смело удаляйте. Также можно подумать о замене ассетов (они же ресурсы) из папки Resources на AssetBundles – это означает что такие ассеты будут загружаться динамически, тем самым уменьшая размер билда. О AssetBundles будет отдельная статья.
Предложения по уменьшению размера билда.
Обычно текстуры занимают большую часть размера билда. Первым решением уменьшающим их является компрессия (она настраивается при импорте текстур в инспекторе, как всегда в будущем я напишу подробную статью об этом). Если это не уменьшает размер файла достаточно, попробуйте уменьшить физический размер текстуры (в пикселях). Чтобы сделать это без изменений исходного файла, выберите текстуру в окне проекта и в окне инспектора измените параметр Max Size. Чтобы увидеть, как это выглядит в игре, увеличьте масштаб игрового объекта, который использует эту текстуру, а затем отрегулируйте Max Size, пока он не начнет выглядеть в окне сцены хуже. Изменение параметра Max Size никак не влияет на ваш ассет текстуры, только на его разрешение в игре.
По умолчанию Unity сжимает все текстуры при импорте. Для ускорения рабочего процесса в редакторе перейдите по пути Edit\Preferences и во вкладке General уберите галочку напротив пункта Compress Assets on Import. Все текстуры сжимаются при сборке билда независимо от этого параметра.
Вы также можете сжимать сетки и клипы анимации при импорте (опять же для уменьшения веса итогового билда). Чтобы включить компрессию сетки (Mesh compression), выберите в окне проекта необходимую вам сетку, и в окне инспектора установите напротив пункта Mesh compression один из трех параметров: Low, Medium или High. Помните, что сжатие сеток и анимаций вносит в них неточность, поэтому с этими параметрами нужно поэкспериментировать чтобы подобрать нужные для себя значения.
Также обратите внимание что сжатие сетки уменьшает занимаемую ей память только на жестком диске, в оперативной памяти она имеет все тот же изначальный вес. Также нужно знать, что сокращение ключевых кадров в анимации уменьшает вес файла как на жестком диске, так и в оперативной памяти.
И последнее о чем сегодня хотелось бы сказать по теме уменьшения билда – это сборки .NET API используемые для разработки в Unity. Их существует всего две – 4.х и .NET Standard 2.0, последняя имеет урезанный функционал, но при этом и весит меньше, что в итоге поможет вам уменьшить размер билда.
При создании билда иногда требуется каким-то образом изменить ход сборки. Например сделать так, чтобы Unity собрал не только билд на ПК, а также добавил установщик к нему. Чтобы сделать это нужно воспользоваться скриптом редактора, используя BuildPipeline.BuildPlayer, он нужен для запуска сборки, а затем запустить код постобработки который вам нужен:
Выше самый простой из примеров того как можно сделать свой сборщик билдов. О возможностях BuildPipeline я более подробно расскажу в своих будущих статьях.
На сегодня это все. В следующей статье я расскажу о некоторых известных проблемах и способах их решения в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!