下载 App
:
根本原因:两套数据系统不同步
Leaderboard 使用 foodAlerts_(只增不减的累计计数器)→ 显示"5份食物待处理"
BrainDashboard 使用 FoodPipeline.GetOrganQueue(云端实际队列)→ 食物被 ConsumeAndInjectFoods 消费后队列为空
当玩家进入口腔关卡,main.lua:515 调用 ConsumeFromOrgan("oral", 10, ...) 消费了云端队列,但 Leaderboard 的计数器不递减。
修复方案:
给 Leaderboard 添加递减接口和查询接口
在 FoodPipeline.ConsumeFromOrgan 成功时递减 Leaderboard 计数
BrainDashboard 融合两个数据源:云端队列优先(有详情),Leaderboard 计数兜底
:
一、先纠正一个关键误解
你说的"单机模式有 clientCloud,多人模式无 clientCloud"并不准确。实际情况是:
模式 clientCloud CloudProxy 路由
单机 ✅ 直接可用 CloudProxy:Set() → clientCloud:Set()
多人 ✅ 依然存在 CloudProxy:Set() → Client.CloudSave() → Server → serverCloud
CloudProxy 已经做了这个透明切换(CloudProxy.lua:46-57)。所以不存在"有/无 clientCloud"的问题——两种模式下 CloudProxy 的接口完全一致,只是底层路由不同。
这意味着 MapEditor 用 cloud:Set("map_xxx", data) 保存的地图,在两种模式下都能工作——但存到了不同的地方:
单机:存进你自己的 clientCloud 个人空间
多人:存进 serverCloud 的你的 userId 分区
两种模式下,其他玩家都读不到你的地图。 这才是核心问题。
:
流程跑通情况: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 → 像素剥落)是通的。





