Обновленный 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
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using UnityEngine; public class DetailedBuildReportExample : MonoBehaviour { [MenuItem("Build/DetailedBuildReport example")] public static void MyBuild() { BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); buildPlayerOptions.scenes = new[] { "Assets/scenes/MainMenu.unity", "Assets/scenes/_levels/level_Island.unity" }; buildPlayerOptions.locationPathName = "DetailedReportBuild/MyGame.exe"; buildPlayerOptions.target = BuildTarget.StandaloneWindows64; buildPlayerOptions.options = BuildOptions.DetailedBuildReport; var buildReport = BuildPipeline.BuildPlayer(buildPlayerOptions); } } |
Если мы добавим приведённый выше скрипт в папку 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. Также можно оставить вопрос в этой ветке форума.