编辑器修改角色后,如何更新回 JSON 文件

昨天 12:35综合
当前架构
编辑器的存储系统有两条独立路径,和游戏角色选择是完全解耦的:
存储位置 文件/API 用途 当前状态
本地即时存档 char_editor_save.json(File API 沙箱) 编辑器下次打开恢复工作状态 正常
云端存档 clientCloud API(键值对) 跨设备同步角色数据 显示"云端不可用"(需要多人模式 + 网络连接)
游戏资源 JSON assets/image/dad_side_idle.json 等 spawnPlayer() 读取生成角色 构建时打包,运行时只读
关键问题:编辑器修改的像素数据存在 CharData 内存对象里,保存时走的是"编辑器存档"(本地/云),不会写回 assets/image/*.json 资源文件。而游戏选角界面读的是后者。
方案:添加"导出到资源 JSON"功能
完全可行。需要的就是一个反向操作——把 CharData 当前帧的 pixels 导出为 {"width":32, "height":32, "pixels":{"x,y":[r,g,b,a],...}} 格式,然后用 File API 写入沙箱文件。
流程是:
编辑器工具栏加一个"导出 JSON"按钮
点击后,遍历当前方向(或全部方向)的当前帧 pixels
序列化为与 dad_side_idle.json 相同的格式
用 File(path, FILE_WRITE) 写入
但有一个限制:运行时 File API 写入的文件在沙箱目录中,不在 assets/image/ 里。所以写入后,当前会话可以读到(因为沙箱路径优先级高于资源路径),但重新构建后会被资源覆盖。
实际上有两种使用场景:
场景 可行性 说明
运行时热更新:编辑→导出→立刻在游戏里看到新效果 可行 沙箱文件覆盖资源文件,同一会话内生效
永久更新资源:编辑→导出→下次构建也用新图 需要额外步骤 需要把沙箱中的 JSON 复制回 assets/image/,这步需要在 AI 侧完成(构建前用脚本同步)
TapTap
1
4