La opción de construcción WebGL le permite a Unity publicar contenido como programas JavaScript que utiliza tecnologías HTML5 y el API de renderización WebGL para correr el contenido de Unity en el explorador web. Para construir y probar su contenido para WebGL, simplemente escoja el objetivo de construcción WebGL en la ventana de Build Player, y oprima Build & Run.
Para correr en WebGL, todo nuestro código necesita estar en JavaScript. Nosotros utilizamos el toolchain de compilación emscripten para hacer una compilación cruzada del código de ejecución de Unity (escrito en C y C++) a asm.js JavaScript. asm.js es un sub conjunto muy optimizado de JavaScript que le permite a los motores de JavaScript en AOT-compile código asm.js a un código nativo de buena calidad.
Para convertir el código del juego .NET (sus scripts C# y UnityScript) a JavaScript, nosotros utilizamos una tecnología que llamamos IL2CPP. IL2CPP toma bytecode .NET y lo convierte en archivos fuente correspondientes a c++, el cual luego compilamos utilizando emscripten para que sus scripts sean convertidos a JavaScript. Este proceso de conversión podría tener algunos problemas de compatibilidad con su código script en el lanzamiento de acceso temprano, el cual estamos trabajando por resolver, pero con tal de que usted no requiera hilos o características de generación de código dinámico se espera que funcione.
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).
Las construcciones WebGL no pueden ser depuradas en MonoDevelop o Visual Studio. Ver: Depuración y resolución de problemas de construcciones WebGL.
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.