什么是Unity WebGL?html
可使用Unity的WebGL构建选项将内容以JavaScript程序发布,这当中使用了HTML5技术和WebGL渲染接口API以在浏览器中运行Unity内容。在Build Player窗口中选择WebGL构建目标,而后点击Build & Run,就能以WebGL形式构建并测试你的内容。web
技术概览编程
要在WebGL中运行,全部代码必须是JavaScript。咱们使用emscripten编译工具链将Unity运行时代码(用C和C++编写)跨平台编译成asm.js JavaScript。asm.js是JavaScript的一个很可优化的子集,容许JavaScipt引擎将asm.js代码AOT编译成很是高效的原生代码。浏览器
为将.NET游戏代码(你的C#和UnityScript脚本)转换成JavaScript,咱们使用了称为IL2CPP的技术。IL2CPP提取.NET字节码并将其转换成相对应的C++源文件,接着使用emscripten技术编译这些文件,将你的脚本转换成JavaScript。安全
平台支持网络
大多数主流浏览器的当前版本都支持Unity WebGL内容,然而不一样浏览器的支持程度不同。Unity WebGL不支持移动设备。多线程
WebGL构建里并不包含Unity的全部内容,这主要由于平台的限制。具体来讲是如下几点:工具
· 构建的WebGL内容不支持多线程,这是因为JavaScript自己就缺少多线程的支持。其中包括Unity内部为提升性能所用的多线程,以及脚本代码和托管dll里使用的多线程。基本上,System.Threading
命名空间里的全部内容都不被支持。性能
· 在MonoDevelop或Visual Studio中WebGL构建不能被调试。详见:WebGL构建调试及疑难解答。测试
· 出于安全起见,浏览器不容许在网络编程里直接访问IP套接字。详见:WebGL网络编程。
· WebGL图形接口API至关于OpenGL ES2.0,其有不少限制。详见:WebGL图形技术。
· 基于Web Audio接口API ,WebGL构建为音频使用自定义的后台技术,其只支持基本的音频特性。详见:在WebGL中使用音频。
· WebGL是一个AOT平台,所以它不支持使用System.Reflection.Emit
动态建立代码。在全部其余IL2CPP平台、iOS和大多数控制台上也是不支持的。