SuperAPI AI 工具集

editor-gizmo

智能体与模型

查看项目

更新于 10-15 20:34

技能介绍

用途:在 Decentraland 场景预览(/preview)中加入场景内可视化编辑器,通过鼠标拖拽调整已声明实体的位置与旋转,改动自动写回 main-entities.ts 并同步重建 main.crdt。部署后的场景不会显示编辑器 UI。

主要能力:右下角铅笔按钮开关编辑器(默认关闭);自动发现带 Transform + MeshRenderer/GltfContainer 的实体,层级面板只显示 main-entities.ts 中声明了 Name 的实体;点击选中显示线框包围盒并生成 gizmo;平移模式提供 X/Y/Z 三色箭头及 XZ/XY/YZ 平面手柄,旋转模式提供三个世界轴圆环,gizmo 始终对齐世界轴,拖拽增量会转换到子实体的局部空间;E 键切换移动/旋转,F 键或点击地面取消选择,4 键撤销、Shift+4 重做;每次拖拽结束向 ${realm.baseUrl}/editor/changes 发送 POST,由预览服务器合并进 main-entities.ts 并同步重建 main.crdt,无需手动保存。

使用方式:把 {baseDir}/src/__editor/* 复制到场景的 src/__editor/(mkdir -p src/__editor && cp -rf {baseDir}/src/__editor/* src/__editor/),在 src/index.ts 中导入并调用 enableEditor()(预览之外为空操作,可安全保留);确保场景根目录有 main-entities.ts,并把 tsconfig.json 的 include 扩展为 ["src//*.ts", "src//*.tsx", "main-entities.ts"];运行 /preview 后点击铅笔按钮即可使用。运行时生成的实体仍用 engine.addEntity(),不要赋予 Name、不要写入 main-entities.ts。

限制:只编辑 main-entities.ts 声明的实体,运行时实体在层级中被隐藏;main-entities.ts 只接受纯 JSON 字面量,不能用 Vector3.create(...)、展开、计算表达式或字面量内注释,否则构建/保存会出错或被剥离;组件形状对应 SDK protobuf(如 MeshRenderer 为 { mesh: { $case: 'box', box: { uvs: [] } } }),box/plane 需要 uvs: [];重命名实体会让旧引用在编译期报错;实体名字唯一,父级用 Name 引用;删除编辑器只需删除 src/__editor/ 并移除导入与调用,main-entities.ts 不受影响。其余收费、平台等未见说明。