Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Отладка и устранение неполадок в сборках WebGL

Visual Studio не поддерживает отладку Unity WebGLAPI JavaScript, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее
Смотреть в содержимом Словарь
. Чтобы помочь вам точно узнать, что происходит с вашим контентом, вот несколько советов о том, как получить информацию из вашей сборки.

Консоль JavaScript браузера

Unity WebGL не имеет доступа к вашей файловой системе, поэтому он не записывает файл журнала, как другие платформы. Однако он записывает всю информацию журнала (такую ​​как Debug.Log, Console.WriteLine или внутренний журнал Unity) в папку браузера. Консоль JavaScript.

Чтобы открыть консоль JavaScript:

  • В Firefox нажмите Ctrl-Shift-K в Windows или Command-Option-K на Mac.
  • В Chrome нажмите Ctrl + Shift + J в Windows или Command + Option + J в Mac.
  • В Safari выберите «Настройки» > «Дополнительно» > «Разработка» и нажмите Command-Option-C.
  • В Microsoft Edge или Internet Explorer нажмите F12.

Разработка

В целях отладки вы можете создать сборку для разработки в Unity (откройте окно настроек сборки и нажмите Сборка для разработкиСборка для разработки включает символы отладки и включает профилировщик. Подробнее
См. в Словарь
). Сборки для разработки позволяют подключать профилировщикокно, помогающее оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Подробнее
См. в Словарь
, и Unity не минимизируйте их, чтобы созданный код JavaScript по-прежнему содержал удобочитаемый (хотя C++-искаженное) имена функций. Браузер может использовать их для отображения трассировки стека, когда вы сталкиваетесь с ошибкой браузера, при использовании Debug.LogError или когда вы создаете исключение, а поддержка исключений отключена. В отличие от управляемых трассировок стека, которые могут возникать при полной поддержке исключений (см. ниже), эти трассировки стека имеют искаженные имена и содержат не только управляемый код, но и внутренний код UnityEngine.

Поддержка исключений

В WebGL предусмотрены различные уровни поддержки исключений (см. документацию по Сборке для WebGL). По умолчанию Unity WebGL поддерживает только явно созданные исключения. Вы можете включить Полную поддержку исключений, которая инициирует дополнительные проверки в коде, сгенерированном IL2CPP, для перехвата доступа к нулевым ссылкам и элементам массива за границами в вашем управляемом коде. Эти дополнительные проверки значительно влияют на производительность и увеличивают размер кода и время загрузки, поэтому их следует использовать только для отладки.

Полная поддержка исключений также создает имена функций для создания трассировки стека для вашего управляемого кода. По этой причине в консоли отображаются трассировки стека для неперехваченных исключений и для операторов Debug.Log. Используйте System.Environment.Stacktrace, чтобы получить строку трассировки стека.

Устранение неполадок

Проблема: сборке не хватает памяти

Это распространенная проблема, особенно в 32-разрядных браузерах. Дополнительную информацию о проблемах с памятью WebGL и способах их устранения см. в документации по памяти в WebGL.

Проблема: файлы, сохраненные в Application.persistentDataPath, не сохраняются

Unity WebGL сохраняет все файлы, которые должны сохраняться между сеансами (такие как PlayerPrefs или файлы, сохраненные в persistenceDataPath), в IndexedDB браузера. Это асинхронный API, поэтому вы не знаете, когда он завершится.

Вызовите следующий код, чтобы убедиться, что Unity сбрасывает из памяти все ожидающие операции записи файловой системы в файловую систему IndexedDB:

FS.syncfs(false, function (err) { console.log('Error: syncfs failed!'); });

Сообщение об ошибке: неправильная проверка заголовка

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

Сообщение об ошибке: распаковка этого формата (1) не поддерживается на этой платформе

Журнал консоли браузера выводит эту ошибку, когда контент пытается загрузить AssetBundle, сжатый с помощью LZMA, который Unity WebGL не поддерживает. Повторно сожмите AssetBundle, используя LZ4 сжатиеметод хранения данных, который уменьшает объем требуемого дискового пространства. См. Сжатие текстур, Сжатие анимации, Сжатие звука, Сжатие компоновки.
См. Словарь
, чтобы решить эту проблему. Дополнительную информацию о сжатии для WebGL см. в документации по созданию WebGL, особенно в разделе AssetBundles.


  • MonoDevelop заменен на Visual Studio из 2018.1

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3