本技能用于为 Decentraland 场景构建 2D 屏幕空间 UI,底层是 Decentraland SDK7 的 React-ECS(JSX,来自 @dcl/sdk/react-ecs)。默认采用可编辑模式:每个组件放在 src/ui/<Component>.tsx 下,一个文件一个组件,文件名与导出的函数名一致(PascalCase),文件以 /** @jsx ReactEcs.createElement */ 开头并引入 ReactEcs;状态/属性可被 Creator Hub 的 2D UI 编辑器解析、在画布上渲染并回写。仅当 UI 无法用该契约表达(如 .map() 渲染运行时集合、按调用返回不同结构、children 插槽等)时才使用自由编码模式。可表达的元素仅五种:UiEntity、Label、Input、Dropdown、Button,另可引用其他 src/ui/ 组件。风格绑定支持对 uiTransform、uiBackground 等键直接引用 state.x / props.x,文本可使用仅含裸引用插值的模板字符串。事件处理限于 onMouseDown、onMouseUp、onMouseEnter、onMouseLeave 以及 Input/Dropdown 的 onChange/onSubmit;互动样式通过 useInteraction 分层(base → active → hover → press)。前置条件为 @dcl/sdk 7.26.0+。src/ui/index.tsx 为生成文件,不要手改,并由 main() 调用 setupUi()。所有时钟、缓动、定时、格式化与状态机应放到 src/ui/ 之外的驱动文件中。限制:编辑器无法静态理解的代码会静默降级(冻结节点或不可见节点);移动端安全区嵌套行为尚未在真机测量。
build-ui
前端与建站
更新于 10-15 16:40