Unity: подробный инспектор процесса сборки

Обновленный API BuildReport в бета-версии Unity 2020.1 даёт более подробную информацию о сборке вашего проекта, разбивая до уровня ресурсов. Эта информация поможет вам оптимизировать время итераций.

Перейдите на страницу руководства BuildOptions.DetailedBuildReport, чтобы непосредственно узнать, как использовать новый API, и добавьте инспектор сборки в свой проект.

Сборка проектов с большим количеством контента может стать довольно продолжительной. Это замедляет итерации, особенно при тестировании на нескольких платформах.

В Unity 2018.1 появился API BuildReport, который предоставляет информацию о процессе сборки. BuildReport, возвращаемый из BuildPipeline.BuildPlayer, содержит информацию о шагах, происходящих в процессе сборки, о том, какие ресурсы влияют на размер сборки и какие модули движка включены в сборку.

В Unity 2020.1, если вы передадите новую опцию BuildOptions.DetailedBuildReport в функцию API BuildPipeline.BuildPlayer, у вас будет больше информации, доступной в объекте BuildReport, например, более подробные шаги сборки и сводная информация о том, какие сцены используют ресурсы в билде.

Пакет Build Report Inspector

API BuildReport позволяет создавать собственные инструменты для анализа сборки вашего проекта.

Один из подходов к изучению того, как использовать этот API — взглянуть на Build Report Inspector, предоставляемый Unity.

Build Report Inspector можно добавить в проект из окна диспетчера пакетов Unity. Установите флажок Show Preview Package в меню Advanced и найдите Build Report Inspector в списке. Наконец, нажмите кнопку Install.

Вы можете получить скрипт Build Report Inspector (включая будущие экспериментальные версии), а также внести свой вклад в его улучшение из этого GitHub репозитория.

Build Report Inspector добавляет в меню пункт Open Last Build Report в меню Window. Нажатие на Open Last Build Report копирует файл отчёта о последней сборки и выбирает его, чтобы сделать его содержимое видимым в инспекторе:

Дополнительные подробности в BuildReport.steps

При сборке с параметром BuildOptions.DetailedBuildReport новые шаги сборки перечислены в BuildReport.steps.

Шаги сборки, выполняющиеся менее, чем за 1 мс не будут перечислены, так как это создаст много шума.

Новые шаги:

  • Время загрузки и записи ассетов.
  • Время сборки мусора.
  • Время для обработки зависимостей ассетов.
  • Настраиваемые детали и сборки ассет бандлов.

Руководство по BuildOptions.DetailedBuildReport содержит пример скрипта для редактора, показывающего, как использовать эту опцию.

Вот как мы можем изменить этот пример, чтобы собрать проект BoatAttack с флагом BuildOptions.DetailedBuildReport:

Если мы добавим приведённый выше скрипт в папку Assets/Editor проекта «Boat Attack» и нажмем Build/DetailedBuildReport example пункт в меню, начнётся сборка проекта. В конце сборки дополнительные данные будут включены в отчёт о сборке.

Теперь, если мы используем команду Window/Open Last Build Report , как описано в предыдущем разделе, мы сможем увидеть, что в отчёт были включены дополнительные шаги:

Дополнительная информация позволяет точно определить, какие этапы и какие ресурсы занимают больше времени при создании проекта.

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

Найти все сцены, использующие определённый ассет

В процессе замены тяжелых ассетов может быть полезно знать, какие сцены в сборке содержат данный ассет.

Если во время сборки использовался параметр BuildOptions.DetailedBuildReport, эта информация отобразиться в BuildReport как член BuildReport.scenesUsingAssets.

Если вы добавили Build Report Inspector в свой проект, вы можете просмотреть эту информацию на вкладке ScenesUsingAssets:

Во время разработки замена этих ресурсов более мелкими или создание профилей сборки без сцен, ссылающихся на них, поможет сократить время итераций.

Unity 2020.1 бета и вебинар

Используйте подробные отчёты о сборке, чтобы узнать, что тормозит сборку вашего проекта, и используйте эту информацию для оптимизации циклов итераций. Попробуйте эту фичю в бета-версии Unity 2020.1 и поделитесь с командой Unity впечатлениями. 20 апреля в 19:00 по Москве Unity проведут вебинар по 2020.1b для людей, заинтересованных в ознакомлении с новыми фичами. Вы можете зарегистрироваться на вебинар по ссылке. Если у вас возникнут дополнительные вопросы об этой или других функциях в 2020.1, Unity проведут Q&A вебинар с обзором 2020.1b. Также можно оставить вопрос в этой ветке форума.