包含此页的版本:
不含此页的版本:
Unity 使用 Emscripten 编译器工具链将用 C 和 C++ 编写的 Unity 运行时代码交叉编译为 WebAssembly(也称为 Wasm)。Emscripten 生成小代码,加载时间和内存效率高,旨在提供接近本机速度的执行。
Unity 使用IL2CPP Unity 开发的脚本后端,在为某些平台构建项目时,可以将其用作 Mono 的替代方案。更多信息
请参阅术语表转换 C# 中的 .NET 游戏代码脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表到瓦斯姆。IL2CPP 获取 .NET 字节码并将其转换为相应的 C++ 源文件,然后使用 Emscripten 进行编译以将您的脚本转换为 Wasm。
Unity 将 Emscripten 编译器与 Web 平台包捆绑在一起,因此您不必手动下载它。编辑器使用的 Emscripten 版本因编辑器版本而异:
| Unity 版本 | Emscripten 版本 | 支持的本机插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息 请参阅术语表文件格式 |
|---|---|---|
| Unity 2023.2 及更高版本 | Emscripten 3.1.38-unity | .a、.bc |
| Unity 2022.2 及更高版本 | Emscripten 3.1.8-unity | .a、.bc |
| Unity 2021.2 及更高版本 | Emscripten 2.0.19.6-unity | .a、.bc |
| Unity 2019.2 至 2021.1 | 1.38.11-统一 | 。公元前 |
| Unity 2018.4 至 Unity 2019.2 | 1.37.40-统一 | 。公元前 |
| Unity 2018.2 至 Unity 2018.4 | 1.37.33-统一 | 。公元前 |
笔记:
以下列表提供了上表中列出的文件格式首字母缩略词的扩展:
.a).o).bc)对于 Emscripten 2.0 之前的 Emscripten 版本,Unity 建议构建Bitcode插件(类型.bc).从 Emscripten 2.0 开始,Unity 建议构建Wasm Object File插件,这些插件是 Wasm 对象文件类型.o,捆绑到 GNU 存档文件中.a.
您可以从emscripten-version.txt位于:
C:\Program Files\Unity\Hub\Editor\<Editor version>\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten-version.txt
如果您要为 Unity 应用程序创建本机 C/C++ 插件,则可以将 C/C++ 代码与项目捆绑在一起(请参阅本机插件 在 Unity 外部创建以在 Unity 中使用的特定于平台的本机代码库。允许您访问作系统调用和第三方代码库等功能,否则 Unity 无法使用这些功能。更多信息
请参阅术语表)或使用 Emscripten 编译器工具链提前将本机代码构建到插件存档中。
如果您选择提前构建插件代码,则应使用 Emscripten 编译器工具链。为确保 LLVM 二进制格式兼容性,用于编译插件的 Emscripten 版本必须与 Unity 使用的 Emscripten 版本匹配。
通常,插件被编译为静态库存档格式。对于 Unity 2021.2 (Emscripten 2.0) 之前的版本,LLVM Bitcode 文件格式 (.bc) 是首选插件格式。
从 Unity 2021.2 开始,首选插件格式是 GNU 存档文件格式 (.a) 包含 WebAssembly 对象文件 (.o).尽管仍然支持早期的 LLVM Bitcode .bc 插件文件,但使用它们可能会对编译时间产生负面影响。
注意:将本机插件从一个 Unity 版本迁移到使用不同版本 Emscripten 的版本时,Unity 建议从源代码重新编译 Unity 插件,因为 LLVM 编译器项目不保证构建工件文件在编译器版本之间的二进制兼容性。
如果编译 WebAssembly 对象文件以与 WebAssembly 2023 或 C/C++ 多线程一起使用,请包含以下 Emscripten 构建标志。如果没有这些标志,代码可能无法与使用 Unity 构建的代码正确链接。
| 目标 | 所需的 Emscripten 构建标志 |
|---|---|
| WebAssembly 2023 |
-msimd128 -fwasm-exceptions -mbulk-memory -mnontrapping-fptoint -msse4.2 -sWASM_BIGINT -sSUPPORT_LONGJMP=wasm
|
| C/C++ 本机多线程 | -pthread |