西米:
NPC 的配图数据(像素精灵文件)目前没有通过 CrossPlayerChannel 共享。levels.json 的 npcBindings 只存了 { [organId] = { [enemyType] = npcName } } 这种映射关系,但实际的 NPC 精灵数据(像素帧等)并没有被打包进去。这是一个独立于 LevelManager 的问题。你看到的现象是:根本原因:NpcPickerPanel 在多人模式下从 cloud(个人 CloudProxy)读取 npc_index,但 NPC 数据是管理员个人云存储里的,普通玩家云端没有这些数据。有两个方案可以解决:快速方案:在 PublishAllMaps 时把 NPC 精灵数据也一并发布到 serverCloud uid=0,然后 NpcPickerPanel 的云端加载路径改为走 CrossPlayerChannel轻量方案:如果菜品配图只是展示用,在投喂流程中不需要让玩家选配图,可以在非管理员时隐藏配图按钮
:
流程跑通情况:3/5 已实现,2 个关键环节缺失已跑通的部分环节 代码位置 状态processedLevel 门控 Tower.lua:624-625 — noProcessMul=0.2 / preProcessMul=5.0 已实现物理击杀 → Split 触发 Tower.HandleKillProducts() → Enemy.Split() (Tower.lua:591-592) 已实现子体继承 processedLevel+1 Enemy.Split() 第 387 行 processedLevel = enemy.processedLevel + 1 已实现酶粒子随机剥像素 + VFX EnzymeParticle.StripPixel() → Enemy.StripPixel() → 随机移除 key → pixelStrip VFX 已实现渲染优先 instancePixels Render.lua:1333-1335 — instancePixels 优先于 npcSpriteCache_ 已实现所以你图中的主干流程(入场 → 酶打不动 → 牙齿咬碎 Split → 子体酶×5.0 → 像素剥落)是通的。
:
问题确认了。NpcEditor 的 refreshNpcIndex 优先从云端加载 "npc_index",如果云端不可用则从本地 npc_sprites/index.json 读取。而 NpcPickerPanel 只读本地文件,如果本地 index 文件不存在就直接返回空。修复方案:给 NpcPickerPanel 添加云端 fallback,异步加载 index 后再打开弹窗。同时增加扫描本地 npc_sprites/ 目录作为兜底。
:
问题明确了 — WASM 平台上 File API 写入内存文件系统,页面刷新即丢失。必须用 clientCloud 云存储才能真正持久化。让我先查阅 clientCloud API 确认可用的存储方式。构建成功。以下是本次 clientCloud 云持久化迁移的完整改动总结:变更内容问题根因:WASM 平台 File API 写入的是内存文件系统,页面刷新即丢失,导致扮演/投喂数据无法持久化。解决方案:全部改用 clientCloud 云存储,数据跨刷新存活。具体改动(scripts/Leaderboard.lua):写入侧 — SaveLocalRoles() / SaveLocalAlerts() 内部从 File 改为 clientCloud:Set()云 key:lb_organ_roles(器官扮演)、lb_food_alerts(投喂提醒)table 类型自动 JSON 编解码读取侧 — 新增 LoadCloudState(onDone) 异步函数使用 clientCloud:BatchGet():Key():Key():Fetch() 一次性读取两个 key恢复到内存 organRoles_ / foodAlerts_初始化流程 — Leaderboard.Create() 改为异步链式:LoadCloudState() → 恢复扮演/投喂数据 → FetchLeaderboard() 拉取排行榜确保 UI 渲染时已有正确的器官标签和投喂徽标清理 — 删除无用的 LOCAL_ROLES_PATH / LOCAL_ALERTS_PATH 常量现在可以刷新页面测试,扮演和投喂数据应在刷新后正确恢复。







