Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

为 Web 平台编译

参见

本页面描述的是如何从源码编译 HTML5 编辑器和导出模板二进制文件。如果你想要将项目导出到 HTML5,请移步《为 Web 导出》。

需求

编译 Web 的导出模板需要以下内容:

参见

关于获取 Godot 源码以便进行编译,请参见 获取源代码

有关 Godot 的 SCons 用法的一般概述,请参阅 构建系统介绍

构建导出模板

在开始之前,确认 emcc 在你的 PATH 中是可用的。这通常是由 Emscripten SDK 配置的,例如在调用 emsdk activatesource ./emsdk_env.sh/emsdk_env.bat 时。

打开终端(命令行),并进入到引擎源代码的根目录。然后,让 SCons 开始构建 Web 平台。你需要指定 target 参数,如果要编译发布版就设为 template_release ,如果要编译调试版就设为 template_debug

scons platform=web target=template_release
scons platform=web target=template_debug

默认情况下,引擎在编译时会内置 JavaScriptBridge singleton ,官方提供的导出模板也都启用了这个 JavaScript 单例。不过,由于调用 eval() 可能会带来安全隐患,你可以使用 javascript_eval 选项来编译一个不包含该单例的引擎版本:

scons platform=web target=template_release javascript_eval=no
scons platform=web target=template_debug javascript_eval=no

默认情况下,WebWorker 线程支持是开启的。如果你想禁用它,并且只使用单线程运行,可以使用 threads 选项来编译一个不带线程支持的网页模板:

scons platform=web target=template_release threads=no
scons platform=web target=template_debug threads=no

现在,引擎将由 Emscripten 编译为 WebAssembly。完成后,生成的文件将放在 bin 子目录中。其名称针对发布版本是 godot.web.template_release.wasm32.zip,或针对调试版本是 godot.web.template_debug.wasm32.zip

最后将 zip 归档文件重命名为 web_release.zip,作为发布模板:

mv bin/godot.web.template_release.wasm32.zip bin/web_release.zip

调试模板则重命名为 web_debug.zip

mv bin/godot.web.template_debug.wasm32.zip bin/web_debug.zip

GDExtension

由于性能和兼容性的原因,默认的导出模板不包含对 GDExtension 的支持。详见导出页面

构建导出模板时使用选项 dlink_enabled=yes 选项即可启用对 GDExtension 的支持:

scons platform=web dlink_enabled=yes target=template_release
scons platform=web dlink_enabled=yes target=template_debug

完成后,可以将得到的文件放入子目录 bin 中。名称中带有 _dlink

最后将 zip 归档文件重命名为 web_dlink_release.zipweb_dlink_release.zip,作为发布模板:

mv bin/godot.web.template_release.wasm32.dlink.zip bin/web_dlink_release.zip
mv bin/godot.web.template_debug.wasm32.dlink.zip bin/web_dlink_debug.zip

构建编辑器

其实也可以编译出一个能在浏览器里运行的 Godot 编辑器版本。不过,这个网页版并不推荐作为主力使用,体验上还是原生的桌面版(Native build)更好。如果你想编译网页版编辑器,可以使用以下命令:

scons platform=web target=editor

编译完成后,生成的文件会被放在 bin 子文件夹里。它的名字会是 godot.web.editor.wasm32.zip 。你只需要把这个压缩包里的内容上传到你的网页服务器上,然后用浏览器访问它,就可以直接使用这个编辑器啦。

关于网页服务器的要求,请参考 export page

小技巧

Godot 仓库包含一个 Python 脚本,用于托管本地 web 服务器。这可以用来在本地测试 Web 编辑器。

编译完编辑器后,解压在 bin/ 文件夹中创建的 ZIP 文件,然后在 Godot 仓库根目录中运行以下命令:

# You may need to replace `python` with `python3` on some platforms.
python platform/web/serve.py

这会启动一个本地服务来提供 bin/ 文件夹里的内容,并且会自动打开你电脑的默认浏览器。在打开的网页中,找到并访问 godot.editor.html ,你就可以通过这种方式来测试网页版的编辑器了。

请注意,对于生产用例,不应使用此基于 Python 的 Web 服务器。相反,你应该使用已建立的 Web 服务器,例如 Apache 或 nginx。