可视化编辑 + 源码烘焙 方法论

05/122 浏览攻略
问题背景
在沙箱/WASM 环境中,运行时文件持久化存在路径不一致问题:
FILE_WRITE 写入 savedata 目录
FILE_READ 从资源路径搜索
两者不是同一位置,导致"写得进、读不出"
三层解决策略
第一层:内存缓存(会话内持久)
解决同一次运行中"写完立刻读"的场景。
写入 → 同时存内存缓存
读取 → 优先查缓存 → 缓存未命中再读文件
适用:页面跳转后仍需读取刚保存的数据。局限:刷新页面后丢失。
第二层:源码烘焙(永久持久)
将调试/调整结果直接写入源代码,随版本控制永久保留。
可视化编辑器调整 → 截图记录坐标 → 修改源码中的硬编码值 → 构建
适用:最终确定的配置值(位置、尺寸、参数)。局限:每次调整需人工介入。
第三层:FileExists 守卫(静默降级)
避免底层引擎因文件不存在打出 ERROR 日志,干扰问题排查。
lua
复制
-- ❌ 直接构造 File,不存在时 C++ 层打 ERROR
local file = File(path, FILE_READ)
-- ✅ 先检查再构造,静默降级
if not fileSystem:FileExists(path) then return {} end
local file = File(path, FILE_READ)
核心工作流
          ┌─────────────────────────────┐
          │  F11 可视化编辑器           │
          │  拖拽/旋转/缩放 → 实时预览  │
          └──────────┬──────────────────┘
                     │ P 键保存
                     ▼
          ┌─────────────────────────────┐
          │  内存缓存(会话内生效)      │
          │  翻页/回退仍保持调整结果     │
          └──────────┬──────────────────┘
                     │ 满意后截图
                     ▼
          ┌─────────────────────────────┐
          │  截图 → AI 读取坐标         │
          │  → 修改源码 → 构建          │
          └──────────┬──────────────────┘
                     │
                     ▼
             源码中永久生效
可借鉴的通用原则
1. 分离"调试态"和"发布态"的持久化策略
调试态 发布态
目标 快速迭代、即时反馈 稳定可靠、版本可追溯
方式 内存缓存 / 临时文件 源码硬编码 / 配置文件
生命周期 当次会话 永久
2. 编辑器截图即契约
截图包含精确数值(坐标、旋转、尺寸),是人与 AI 之间的无歧义通信协议。比口头描述"往左挪一点"精确得多。
3. 全量同步优于增量补丁
当补丁系统(patch)可靠性存疑时,直接修改源数据比维护一套补丁合并逻辑更简单、更可靠。同一个值只存在一处,不存在"源数据 + 补丁谁优先"的心智负担。
4. 静默降级而非报错崩溃
文件不存在是正常状态(首次运行),应该静默返回默认值,而不是触发 ERROR 日志。FileExists 守卫 + 空对象返回是通用模式。
适用场景
关卡编辑器调参(角色位置、相机参数、触发区域)
UI 布局微调(边距、字号、颜色)
动画时间轴校准(关键帧时间、缓动曲线)
任何"需要反复微调直到视觉满意"的数值