В этом разделе представлен обзор поддерживаемых платформ и другая полезная техническая информация, необходимая для создания приложения с использованием WebGLJavaScript API. который отображает 2D и 3D графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее
См. в Словарь.
Технический обзор
Unity использует emscriptenСвязка инструментов, которую Unity использует для преобразования C и C++ в WebAssembly. Подробнее
См. в Словарь набор инструментов компилятора для кросс-компиляции кода среды выполнения Unity (написанного на C и C++) в WebAssembly (также известный как Wasm). Основные преимущества emscripten заключаются в том, что он имеет небольшой размер, эффективное время загрузки и памяти, а также стремится обеспечить скорость выполнения, близкую к исходной. Дополнительные сведения о WebAssembly в Unity см. в этом сообщении в блоге. .
Чтобы преобразовать код игры .NET (ваши сценарии C#) в WebAssembly, Unity использует технологию под названием IL2CPPРазработанный Unity сервер сценариев, который можно использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Подробнее
См. в Словарь. IL2CPP берет байт-код .NET и преобразует его в соответствующие исходные файлы C++, которые затем компилируются с помощью emscripten для преобразования ваших скриптов. код, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на ввод данных пользователем любым удобным для вас способом. Подробнее
См. Словарь для Wasm.
Поддержка платформы
Большинство популярных версий настольных браузеров поддерживают контент Unity WebGL, но обратите внимание, что разные браузеры предлагают разный уровень поддержки. Например, Unity WebGL не поддерживает мобильные устройства.
Следующие функции в сборках WebGL либо недоступны, либо ограничены из-за ограничений самой платформы:
Потоки не поддерживаются из-за отсутствия поддержки потоков в JavaScript. Это относится как к внутреннему использованию потоков в Unity для повышения производительности, так и к использованию потоков в коде сценариев и управляемых библиотеках DLL. По сути, все в пространстве имен
System.Threading
не поддерживается.Отладка сборок WebGL в Visual Studio. См. раздел Отладка и устранение неполадок в сборках WebGL.
Браузеры не разрешают прямой доступ к IP-сокетам для сетиСистема Unity, позволяющая играть в многопользовательские игры через компьютерная сеть. Подробнее
По соображениям безопасности см. в Словарь. См.: Сеть WebGL.Ограничения графического API WebGL, основанного на функциональности графической библиотеки OpenGL ES. См.: Графика WebGL.
В сборках WebGL используется пользовательский сервер для аудио, основанный на Web Audio API, но поддерживаются только основные функции аудио. См. раздел Использование аудио в WebGL.
WebGL — это платформа AOT, поэтому она не позволяет динамически генерировать код с помощью
System.Reflection.Emit
. Это то же самое на всех других платформах IL2CPP, iOSмобильной операционной системе Apple. Подробнее
См. в Словарь и на большинстве консолей.