增加 UI 编辑器节点预览可见性

新增按界面图隔离的临时节点显示状态
接入 UI Tree 眼睛按钮与 Inspector 显示复选框
让两种预览模式按子树隐藏节点并清理失效状态
补充可见性测试与技术方案记录
This commit is contained in:
2026-08-18 12:04:43 +08:00
parent 929788f4f9
commit 2b1fc406a7
9 changed files with 363 additions and 23 deletions
@@ -1092,3 +1092,9 @@ game-project/
- Tauri 专用 load/save command 只接受项目路径、期望项目 ID、manifest asset ID 和(保存时)资源 revision;Rust 按 manifest 解析受控本地路径并在项目写锁内做 CAS。相同 `State` 返回 unchanged 且不推进 project revision;不同内容安装并回读一致后才推进 revision,后续推进失败返回 `reconciliation-required`,不伪装为完整保存。
- UI State 原子安装保留最近一个有效 `.previous` 恢复副本。主文件损坏时仅在恢复副本通过同一严格校验后恢复;恢复安装与保存共用项目写锁,并在持锁后重新读取主文件,已有并发保存的有效新版本时直接返回而不安装旧副本。任一候选均不可信则停在加载错误,前端禁编辑和保存。新建 UI 资源先登记并安装合法 envelope,任一步失败补偿 manifest/文件,避免把空 JSON 留给资源卡。
- 图片路径只需是安全项目相对路径,不要求外部图片仍存在或已登记为 manifest asset;缺失媒体只导致 preview 占位。`imageOrder`、当前选择、缩放、面板开关和 preview URL 不写入 State,加载后由 State 派生。保存冻结提交快照,保存期间的新编辑继续保持 dirty;AI state lock 和加载期间禁保存。
## 2026-08-18 UI Editor 节点预览可见性
- 节点显示 / 隐藏是编辑器页面级临时状态,不新增 Rust `Node` 字段,不进入 UI State 保存快照、运行时数据或后端契约。状态按界面图 ID 和节点 ID 维护;切换界面图保留,清空或重新加载时重置,删除节点或界面图时清理失效 ID。
- 同一可见性状态同时作用于 `编辑叠加` 和 `最终预览`。隐藏节点会截断整个子树,移除节点组件、编辑边框、名称、缩放控制点和画布命中区域;参考图和预览画布本身保持存在。父节点恢复时,子节点此前独立设置的隐藏状态保持不变,根节点不享受特殊限制,也允许隐藏。
- UI Tree 行提供 `Eye` / `EyeOff` 按钮,按钮只切换状态、不改变选择;节点 Inspector 提供“在预览中显示”复选框,两者共享页面控制器状态。隐藏节点仍可通过 UI Tree 选择并在 Inspector 中编辑,但不会重新出现在画布上,直到恢复显示。