При публикации для WebGLJavaScript API, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее
См. Словарь, важно, чтобы размер сборки был небольшим, чтобы пользователи разумное время загрузки до запуска контента. Общие советы по уменьшению размера ресурсов см. в документации по Уменьшению размера файла сборки.
Советы и подсказки, относящиеся к WebGL
Укажите Crunch текстуру сжатиеМетод хранения данных, уменьшающий объем места для хранения, которое он требует. См. Сжатие текстур, Сжатие анимации, Сжатие звука, Сжатие компоновки.
Просмотреть в формате Словарь все ваши сжатые текстуры в формате Импорт текстур.Не развертывайте сборки для разработкиСборка для разработки включает символы отладки и включает профилировщик. Подробнее
См. в Словарь; они не сжаты и не минимизированы, а потому имеют гораздо больший размер файлов. р>В окне настроек Player (нажмите Изменить > Настройки проектаБольшой набор настроек, которые позволяют настроить поведение физики, звука, сети, графики, ввода и многих других областей вашего проекта. Дополнительно информация
См. в Словарь > WebGL) expand Настройки публикации и установите для параметра Включить исключения значение Нет, если вам не нужны исключения в вашей сборке.Включите Удалить код движка в настройках Проигрывателя > панель Другие настройки, чтобы обеспечить эффективную сборку.
При использовании сторонних управляемых библиотек DLL имейте в виду, что они могут поставляться с зависимостямив контексте Диспетчер пакетов, зависимость — это определенная версия пакета (выраженная в форме
ли>имя_пакета@версия_пакета
), которая требуется проекту или другому пакету для работы. Проекты и пакеты используют атрибут dependencies в своих манифестах для определения набора требуемых пакетов. Для проектов это считается прямой зависимостью; для пакетов это косвенные или транзитивные зависимости. Подробнее
См. в Словаре увеличение размера генерируемого кода.
Если вы создаете выпускную сборку, Unity сжимает выходные файлы сборки в соответствии с Форматом сжатия, выбранным на панели Настройки публикации WebGL Player настройки.
Дополнительную информацию о публикации сжатых сборок см. в разделе Развертывание сжатых сборок.
Снятие кода
По умолчанию Unity удаляет весь неиспользуемый код из вашей сборки. Вы можете изменить это в настройках Player (меню: Edit > Настройки проекта, затем выберите категорию Player). : выберите панель Другие настройки, чтобы получить доступ к параметру Удалить код двигателя. Лучше строить с включенным разбором.
Благодаря удалению кода Unity сканирует ваш проект на наличие любых используемых классов, производных от UnityObject
(либо по ссылке в коде вашего скрипта, либо по сериализованным данным в ваших сценах). Затем он удаляет из сборки все подсистемы Unity, классы которых не используются. В результате в вашей сборке будет меньше кода, что приведет к меньшему количеству загрузок и меньшему объему кода для синтаксического анализа (поэтому код выполняется быстрее и использует меньше памяти).
Проблемы с удалением кода
Удаление кода может вызвать проблемы с вашим проектом, если оно удаляет код, который действительно необходим. Это может иметь место, когда вы загружаете AssetBundles во время выполнения, которые содержат классы, не включенные в основную сборку и поэтому удаленные из проекта. Когда это происходит, в консоли JavaScript вашего браузера появляются сообщения об ошибках (возможно, за ними следуют другие ошибки). Например:
Не удалось создать класс с идентификатором XXX
Чтобы устранить эти ошибки, найдите идентификатор (например, XXX
в приведенном выше примере) в идентификаторе класса. Ссылка, чтобы увидеть, экземпляр какого класса он пытается создать. В таких случаях вы можете заставить Unity включить код этого класса в сборку, либо добавив ссылку на этот класс в свои скриптыКусок кода, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на действия пользователя любым способом. Подробнее
См. в Словарь или в своем СценыСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь или добавив link.xml
в свой проект.
Ниже приведен пример, который подтверждает, что Colliderневидимая форма, используемая для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
See in Словарь (и, следовательно, модуль Physics) сохраняется в проекте . Добавьте этот XML-код в файл с именем link.xml
и поместите этот файл в папку Assets.
<linker>
<assembly fullname="UnityEngine">
<type fullname="UnityEngine.Collider" preserve="all"/>
</assembly>
</linker>
Если вы подозреваете, что зачистка вызывает проблемы с вашей сборкой, вы также можете попробовать отключить параметр Strip Engine Code во время тестирования.
Unity не предоставляет удобного способа увидеть, какие модули и классы включены в сборку, что позволило бы вам оптимизировать проект, чтобы он хорошо разбирался. Однако, чтобы получить обзор включенных классов и модулей, вы можете просмотреть сгенерированный файл Temp/StagingArea/Data/il2cppOutput/UnityClassRegistration.cpp
после создания сборки.
Обратите внимание, что параметр Удалить код движка влияет только на код движка Unity. IL2CPPРазработанный Unity сервер сценариев, который можно использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Подробнее
См. в Словарь всегда удаляет байт-код из ваших управляемых библиотек DLL и скриптов. Это может вызвать проблемы, когда вам нужно динамически ссылаться на управляемые типы посредством отражения, а не посредством статических ссылок в вашем коде. Если вам нужен доступ к типам через отражение, вам также может понадобиться настроить файл link.xml
для сохранения этих типов. Дополнительную информацию о файлах link.xml
см. на странице документации по оптимизации размера сборки iOS.
Перемещение выходных файлов сборки
Чтобы изменить расположение папки Build
, измените переменную buildUrl в индексном файле шаблона WebGL.
Чтобы изменить расположение файлов в папке Build
, измените их URL-адреса (то есть dataUrl
, wasmCodeUrl
, wasmMemoryUrl
и wasmFrameworkUrl
) в параметрах переменной конфигурации в индексный файл.
Вы можете указать для них URL-адреса на внешних серверах, если хотите разместить свои файлы в сети распространения контента (CDN), но вам нужно убедиться, что сервер размещения включил совместное использование ресурсов между источниками (CORS) для этого. Работа. Дополнительную информацию о CORS см. на странице руководства по сети WebGL.
Инкрементные сборки
Код C++, сгенерированный для вашего проекта IL2CPP, компилируется постепенно; то есть повторно компилируется только сгенерированный код C++, который изменился с момента последней сборки. Неизмененный исходный код повторно использует те же объектные файлы, созданные для предыдущей сборки. Объектные файлы, используемые для добавочных сборок C++, хранятся в каталоге Library/il2cpp_cache
в вашем проекте Unity.
Чтобы выполнить чистую сборку с нуля сгенерированного кода C++ без использования инкрементной компиляции, удалите каталог Library/il2cpp_cache
в проекте Unity. Обратите внимание: если версия редактора Unity отличается от той, которая использовалась для предыдущей сборки WebGL, Unity автоматически создает чистую сборку с нуля.
- Полный без Stacktrace добавлен в Unity 2017.3