关于 build-app
面向使用 Engine 的开发者,涵盖直接调用、React 和 Web Components 开发方式。内容包括应用生命周期、启动、更新、输入和 UI 管理。
主要功能
- 01检查项目入口与对应参考
- 02配置应用输入和画布尺寸
- 03管理更新时序与应用状态
- 04根据应用状态渲染 UI
- 05明确资源生命周期的归属
适用场景
- 01初始化 Engine 应用
- 02接入输入并调整画布尺寸
- 03实现依赖时间的应用逻辑
- 04组织 UI 与资源清理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ playcanvas/ skills --skill build-app安装后在 Claude Code 中输入/build-app确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/direct-engine.mdreact.mdweb-components.md详细介绍
构建 Engine 应用
阅读 package.json 和入口点,保留负责生命周期的表面,并且只阅读对应的参考文档:direct Engine、React 或
Web Components。根据导入内容和标记选择,而不是根据依赖项。
引导
- 输入是选择启用的。除非传入
new Application(canvas, { ... }),否则app.keyboard、mouse、touch、gamepads和elementInput都保持为null;UI 按钮需要new ElementInput(canvas)。 - Engine 不会添加窗口大小调整监听器;请在自己的处理程序中调用
app.resizeCanvas()。 graphicsDevice.maxPixelRatio默认为 1。只有在目标设备能承受其帧预算时才提高该值,且最高不超过window.devicePixelRatio;随后调用app.resizeCanvas(),并通过canvas.width / canvas.clientWidth确认。- Ammo 通过
WasmModule加载之前,刚体不会活动。使用find-examples复制physics/falling-shapes示例中的加载器。 devtools默认为true,因此调试工具可以找到应用(inspect-runtime)。只有在隐藏生产构建时才将其设为false。
更新循环
dt已由app.maxDeltaTime(0.1 s)限制;调整该值,而不要手动限制。app.timeScale会缩放它,设为0会暂停缩放后的时间。- 将应用状态明确地放在一个位置管理;根据
dt推进依赖时间的逻辑,并通过启动时使用的同一套设置进行重置。
UI
- 根据应用状态渲染 UI;绝不要将真实数据源保存在 DOM 或 UI 元素中。
- 使用 DOM 或 React 覆盖层,或者采用
user-interface示例中的方式使用 Enginescreen和element组件。 - 将未使用的元素设为
enabled = false来隐藏;不透明度为 0 的元素仍会绘制。
所有权
- 由一个所有者统一负责应用创建、资源、实体、更新回调和拆除。
- 优先使用该表面的声明式原语。将每个实体和每帧的行为放入 Engine
Script中。 - 在创建外部事件和资源的生命周期中将其移除。
评论
支持 Markdown