用途:为 Godot 项目的 Web(HTML5)导出提供专家级实践蓝图,基于 Compatibility(WebGL 2.0)渲染器;不覆盖 WebGPU。 主要能力与规则:持久化不要只用 FileAccess,优先用提供的 web_local_storage_wrapper.gd(通过 JavaScriptBridge 使用 localStorage/IndexedDB),并视为非永久存储、生产需云端回退;不要用字符串拼接式 JavaScriptBridge.eval 写 localStorage,避免注入与转义问题。Web 导出不要用 Forward+,使用 Compatibility。不要阻塞浏览器事件循环,长同步任务会“杀死页面”,应使用 await 或可用时的工作线程。启用线程/SharedArrayBuffer 必须配置跨域隔离(COOP/COEP)。标签页失去焦点需暂停音频,全屏/鼠标锁定必须由用户手势触发,HTML 壳中的资源路径必须相对,以支持子目录托管。 使用方式:宿主检查清单——HTTPS;需要线程时提供 COOP/COEP 头;自定义 index.html 与 PCK/WASM 使用相对路径;存在未保存进度时接入 web_navigation_guard.gd;使用 Compatibility 渲染器并按平台选择纹理压缩。scripts/ 内提供封装脚本:localStorage 封装、JS↔GD 双向回调(保持回调引用存活)、响应式画布适配、浏览器输入守卫、远程资源懒加载、异步剪贴板、可见性自动暂停、beforeunload 导航守卫、noopener 外链打开、性能剖析,以及 platform_web_patterns.gd、web_bridge_sync.gd、web_json_rpc_bridge.gd。可用 OS.has_feature("web") 做 Web 专属功能门控;PWA 更新通过 JavaScriptBridge.pwa_update_available 与 pwa_needs_update()/pwa_update() 处理。自定义加载壳可用 Engine 的 startGame 的 onProgress 回调更新进度条。性能方面建议目标约 60 FPS、削减粒子与绘制调用、控制纹理,下载体积控制在实用预算(约 50MB)内,并可通过导入过滤排除文档与源码。 适用场景:需要在浏览器中托管的 Godot 4.x 游戏或应用,尤其涉及保存、线程、响应式画布、剪贴板与外链、PWA 更新的项目。 限制:WebGPU 明确超出范围;许多浏览器 API 依赖 HTTPS 与用户手势;localStorage 不保证永久,需云端回退;线程与 SharedArrayBuffer 依赖 COOP/COEP 隔离;具体脚本实现细节与版本兼容信息资料未完整提供。
godot-platform-web
前端与建站
更新于 10-15 22:11