The WebGL build option allows Unity to publish content as JavaScript programs which use HTML5/JavaScript, WebAssembly, WebGL rendering API and other web standards to run Unity content in a web browser. To build and test your content for WebGL, choose the WebGL build target in the Build Player window, and click Build & Run.
We use the emscripten compiler toolchain to cross-compile the Unity runtime code (written in C and C++) into WebAssembly (also known as Wasm), which has been designed to be small in size, load-time and memory efficient as well as able to deliver close to native speed execution. For more information about WebAssembly in Unity, check this blog post.
To convert the .NET game code (your C# scripts) into WebAssembly, we use a technology called IL2CPP. IL2CPP takes .NET bytecode and converts it to corresponding C++ source files, which is then compiled using emscripten to convert your scripts to Wasm.
El contenido de Unity WebGL es soportado en las versiones actuales de la mayoría de exploradores en el escritorio, sin embargo hay unas diferentes en el nivel de soporte ofrecida por diferentes exploradores. Los dispositivos móviles actualmente no son soportados por Unity WebGL.
No todas las características de Unity están disponibles en las construcciones de WebGL, la mayoría se debe a restricciones de la plataforma. Específicamente:
Los hilos todavía no son soportados debido a la falta del soporte de hilos en JavaScript. Esto aplica a ambos el uso interno de Unity de hilos para mejorar rendimiento, y al uso de hilos en código script y managed dlls (Básicamente, cualquier cosa en el namespace System.Threading
no se soporta).
WebGL builds cannot be debugged in Visual Studio. See: Debugging and trouble shooting WebGL builds.
Los navegadores no van a permitir un acceso directo a IP sockets para el networking (red) debido a razones de seguridad. Ver: WebGL Networking.
La API de gráficos de WebGL es equivalente a OpenGL ES 2.0 y 3.0, que tiene algunas limitaciones. Consulte: Gráficos WebGL.
Las construcciones WebGL utilizan un backend personalizado para Audio, basado en el Web Audio API. Este soporta solamente una funcionalidad básica de audio. Ver: Utilizando Audio en WebGL.
WebGL es una plataforma AOT, por lo que no permite una generación dinámica de código utilizando System.Reflection.Emit
. Esto es lo mismo en todas las otras plataformas IL2cpp, iOS, y la mayoría de consolas.
2018–03–19 Page amended
MonoDevelop replaced by Visual Studio from 2018.1
WebAssembly replaced asm.js from 2018.2
asm.js removed in 2019.1