WebGL Player settings
WebGL 浏览器兼容性

WebGL 开发入门

Unity WebGL 是什么?

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.

平台支持

桌面平台的大多数主要浏览器的当前版本都支持 Unity WebGL 内容,但不同浏览器提供的支持程度存在差异。Unity WebGL 不支持移动设备。

并非所有 Unity 功能都可用于 WebGL 构建,主要是由于平台的限制。具体而言:

  • 由于 JavaScript 中缺少线程支持,因此不支持线程。在 Unity 内部使用线程来加速性能以及在脚本代码和托管的 dll 中使用线程都是不受支持的。实质上不支持 System.Threading 命名空间中的任何内容。

  • 无法在 Visual Studio 中调试 WebGL 构建。请参阅:对 WebGL 构建进行调试和故障排除

  • 出于安全考虑,浏览器不允许直接访问 IP 套接字来进行联网。请参阅:WebGL 网络

  • WebGL 图形 API 等效于 OpenGL ES 2.0 和 3.0,存在一些限制。请参阅:WebGL 图形

  • WebGL 构建使用基于 Web 音频 API 的自定义音频后端。此情况下仅支持基本音频功能。请参阅:使用 WebGL 中的音频

  • WebGL 是一个 AOT 平台,因此不允许使用 System.Reflection.Emit 来动态生成代码。在所有其他 IL2CPP 平台、iOS 和大多数游戏主机上都是如此。


  • 2018–03–19 Page amended with limited editorial review

  • 从 2018.1 开始,MonoDevelop 由 Visual Studio 取代

  • WebAssembly replaced asm.js from 2018.2

  • asm.js removed in 2019.1

WebGL Player settings
WebGL 浏览器兼容性