Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Размер распределения и удаление кода

При публикации для веб-сайтов важно сохранять размер сборки на низком уровне, чтобы пользователи могли загружать контент в разумные сроки. Общие советы по уменьшению размера ресурсов см. в документации по Уменьшение размера файла сборки.

Подсказки и советы по веб-разработке

  • Укажите формат сжатия текстуры Crunch для всех сжатых текстур в Импорт текстуры.

  • Не развертывайте сборки для разработки; они не сжаты или минифицированы, и поэтому имеют гораздо больший размер файла.

  • В окне настроек Игрок (нажмите Изменить > Project Настройки > Веб) разверните Параметры публикациии установите Enable Exceptions на Нет, если вам не нужны исключения в вашей сборке.

  • Включить Код полосы двигателя в 2000 году Игрок настройки > Другие настройки панели, чтобы обеспечить эффективное строительство.

  • При использовании управляемых сторонних dlls следует помнить, что они могут содержать зависимости, увеличивающие размер генерируемого кода.

Если вы создаете сборку выпуска, Unity сжимает выходные файлы сборки в соответствии с Формат сжатия, выбранным в Настройки публикации панели настроек Веб Проигрывателя.

Дополнительные сведения о публикации сжатых сборок см. в разделе Развертывание сжатых сборок.

Стриптинг кода

Unity удаляет все неиспользуемые коды из вашей сборки по умолчанию. Вы можете изменить это с помощью Игрок настройки (меню: Изменить > Project Настройки, затем выберите Игрок Категория: Выберите Другие настройки панели для доступа к Код полосы двигателя вариант. Лучше строить с включенным стриптингом.

При удалении кода, Unity сканирует ваш проект на наличие любых используемых классов UnityObject-derived (либо путем ссылки в коде вашего скрипта, либо в серийных данных в ваших сценах). Затем он удаляет из сборки любые подсистемы Unity, в которых не используется ни один из их классов. Это делает вашу сборку менее кодовой, что приводит как к меньшим загрузкам, так и к меньшему количеству кода для анализа (так что код работает быстрее и использует меньше памяти).

Проблемы с кодом стриппинга

Отстраивание кода может вызвать проблемы в вашем проекте, если оно отнимает код, который на самом деле необходим. Это может произойти, когда вы загружаете AssetBundles во время выполнения, который содержит классы, не включенные в основную сборку, и поэтому были отняты из проекта. Сообщения об ошибках появляются в консоли JavaScript вашего браузера, когда это происходит (возможно, за этим следуют другие ошибки). Например:

Could not produce class with ID XXX

Чтобы устранить эти ошибки, посмотрите ID (например, XXX в примере выше) в Класс ID чтобы понять, экземпляр какого класса он пытается создать. В таких случаях можно заставить Unity включить код этого класса в сборку: добавьте ссылку на класс в свои скрипты или сцены либо добавьте link.xml файл к вашему проекту.

Ниже приведён пример, гарантирующий сохранение класса Collider и модуля Physics в проекте. Добавьте этот XML-код в файл с именем link.xml, и поместите этот файл в свой Ассеты папка.

<linker>
    <assembly fullname="UnityEngine">
        <type fullname="UnityEngine.Collider" preserve="all"/>
    </assembly>
</linker>

Если вы подозреваете, что стриптинг вызывает проблемы с вашей сборкой, вы также можете попробовать отключить опцию Код полосы двигателя во время тестирования.

Unity не предоставляет удобного способа увидеть, какие модули и классы включены в сборку, что позволило бы вам оптимизировать ваш проект для хорошего стрипа. Однако, чтобы получить обзор включенных классов и модулей, вы можете посмотреть на сгенерированный файл Temp/StagingArea/Data/il2cppOutput/UnityClassRegistration.cpp после создания сборки.

Примечание: Код полосы двигателя вариант затрагивает только код движка Unity. IL2CPP всегда вырезает байт-код из ваших управляемых dll и скриптов. Это может создать проблемы, если типы нужны динамически, через рефлексию, а не по статическим ссылкам в коде. Если вы обращаетесь к типам через рефлексию, вам, возможно, придётся настроить link.xml для сохранения этих типов. См. страницу документации по iOS Оптимизация размера сборки для получения дополнительной информации link.xml файлы.

Перемещение выходных файлов сборки

Чтобы изменить расположение папки Build, измените переменный buildUrl в файле Web Template index.html.

Чтобы изменить расположение файлов внутри папки Build, измените их URLs (то есть, dataUrl, wasmCodeUrl, wasmMemoryUrlи wasmFrameworkUrl) в параметрах переменной конфигурации в файле index.html.

Вы можете указать URLs на внешних серверах для этих файлов, если вы хотите разместить свои файлы в сети распространения контента (CDN), но вам нужно убедиться, что сервер размещения включил Cross Origin Resource Sharing (CORS), чтобы это работало. См. страницу руководства по Веб-сеть для дополнительной информации о CORS.

Инкрементальные сборки

Код C++, генерируемый для вашего проекта IL2CPP, компилируется постепенно; то есть, только генерируемый код C++, изменившийся с момента последней сборки, компилируется снова. Неизмененный исходный код повторно использует те же объектные файлы, которые были созданы для предыдущей сборки. Объектные файлы, используемые для постепенных сборок C++, хранятся в каталоге Library\Bee\artifacts\WebGL в вашем проекте Unity.

Чтобы выполнить чистую сборку с нуля сгенерированного кода C++, который не использует инкрементальную компиляцию, удалите каталог Library\Bee\artifacts\WebGL в вашем проекте Unity. Обратите внимание, что если версия Unity Editor отличается от той, которая использовалась для предыдущей веб-компиляции, Unity автоматически выполняет чистую сборку с нуля.