下载 App

排行榜投喂扮演口腔等都要即时本地化持久化

05/054 浏览
让我分析问题:
当前问题:
扮演(Register/Unregister) — 乐观更新了 organRoles_ 但仅存在于内存,页面重开就丢失。且非多人模式下 IsMultiplayer()=false 时直接 return,完全无效
投喂(Feed/FoodAlert) — foodAlerts_ 仅内存计数,SendFoodGift 在非多人模式下直接 return,单机投喂无法触发 alert
器官标签(折叠行) — 依赖 organRoles_ 数据,同样非多人模式下为空
折叠行"投喂"按钮 — 非多人模式下投喂走本地 FoodPipeline.PushToOrgan,但不触发 OnFoodGift 回调更新 alert
核心方案:所有操作统一走 本地持久化(File 沙箱存储),同时在多人模式下叠加网络同步。
注意到 WASM 平台上本地文件在页面刷新后丢失。但看到代码中已有 leaderboard.json 本地文件存储模式在使用(LoadLocalLeaderboard / SaveLocalLeaderboard),说明用户接受这个方案。我需要用同样的模式对 organRoles 和 foodAlerts 做本地持久化。
改动内容
新增本地持久化文件(沙箱内自动隔离):
organ_roles.json — 器官扮演角色注册表
food_alerts.json — 投喂食物提醒计数
即时本地化 + 持久化的操作:
操作 之前 现在
扮演(注册) 仅内存乐观更新 + 网络发送 内存更新 → SaveLocalRoles() → 网络发送
取消(注销) 仅内存清除 + 网络发送 内存清除 → SaveLocalRoles() → 网络发送
投喂(单机) 只写 FoodPipeline,不更新 alert 写 FoodPipeline → UpdateFoodAlert() → SaveLocalAlerts() → 刷新 UI
投喂(多人) 只发网络,不更新本地 alert 发网络 → UpdateFoodAlert() → SaveLocalAlerts() → 刷新 UI
收到投喂通知 仅内存计数 内存计数 → SaveLocalAlerts()
器官标签(折叠行) 依赖 organRoles_ 内存数据 初始化时 LoadLocalRoles() 恢复 → 标签立即可见
数据恢复策略:
Leaderboard.Create() 时从本地文件恢复 organRoles_ 和 foodAlerts_
服务端拉取成功后覆盖本地数据并重新持久化
服务端拉取失败时保留本地已恢复的数据(不清空)
设计方案:菜品名字编辑 + 菜品配图选择截图
设计方案:菜品名字编辑 + 菜品配图选择
一、菜品名字可编辑 改动范围:仅 Leaderboard.lua 的做菜 UI 第三步面板 项 设计 交互 菜品预览区的名字改为 UI.TextInput,默认值 = CookingSystem.MakeDishName(...) 自动生成的名字 字数限制 1-8 个字 空值处理 提交时若为空,回退到自动生成名 数据流 用户输入的名字覆盖 dish.dishName 和 dish.name 字段 改
17 回复
地图编辑器白屏问题截图
地图编辑器白屏问题
白屏问题 pendingRefresh_ 从 RenderMap 内部触发 Refresh 改为由 HandleMapEditorUpdate(Update 事件)触发,彻底解耦 NanoVG 渲染帧和 UI 重建 scissor 加 clipW > 10 and clipH > 10 安全守卫,Layout 未计算完时不裁剪 滚轮穿透 HandleMapEditorMouseWheel 先检查
卡牌:市场调研
skill_market_research 当前仅完成了: 加入随机技能池; 可以在技能节点被选中; 有新绘制图标; 有 Tooltip 设计说明; 能作为技能徽章显示。 但“选择后显示实时人数,并允许一次改选”的玩法逻辑尚未接入。 代码证据 1. Tooltip 明确标记为“设计中” scripts/bullbear/Client.lua:830 当前内容仍是: 技能 · 侦察 + 改选 · 设
官方
关卡地图编辑器没有持久化截图
关卡地图编辑器没有持久化
确认了。levels_cache 是 LevelManager 写入的发布关卡缓存文件,不是用户自建地图。 根因分析清楚了: ScanSavedMaps() 扫描 maps/*.json,会找到 levels_cache.json WASM 刷新后,levels_cache.json 可能在 LevelManager.Load() / CheckForUpdates() 时被重新写入(从 reso
【第四回】葫芦僧献计截图
【第四回】葫芦僧献计
【4回】葫芦僧献计 制作完成,待发布
DIY精灵能够进入关卡截图
DIY精灵能够进入关卡
PNG fallback 已经工作了。现在要打通 NpcEditor → 游戏 的信道,我先看清楚 NpcEditor 保存的数据格式 vs cacheNpcPixels 期望的格式 关键问题找到了。cacheNpcPixels 期望的像素格式是 sparse表({ ["row,col"] = {r,g,b,a} }),而 NpcEditor 的 pixelsToSparse 确实保存这种格式 ✓
每次需要点击一下才显示正确地图名截图
每次需要点击一下才显示正确地图名
根本原因清楚了: CloudLoadMapIndex 加载的是 文件名列表(map_index key),不包含地图名称 s_.mapDisplayNames[filename] 只有在 LoadMap 或 CloudLoadMap(实际加载地图数据时)才被写入 列表里从云端索引来的 map_0509_101656 从未被加载过,所以 mapDisplayNames 里没有它的名字 修复方案:Cl
现在嗒的理解能力了的截图
现在嗒的理解能力了的
我给嗒了三张图,嗒就帮我给这个人物穿上了相应的衣服,造型也符合
1 赞
2 回复
食物摄入记录持久化截图
食物摄入记录持久化
事件订阅链路完整。CloudProxy → Client → Server → serverCloud 的链路是正确的。 现在让我查看排行榜中 foodAlerts_ 累计计数的问题——用户截图显示 badge 是 “11”,这是因为 foodAlerts_ 的计数只增不减(除非手动调用 DecrementFoodAlert)。排行榜页面的 badge 应该使用云端队列的实际数据,和 BrainD
🚪【权限申请】传送门截图
🚪【权限申请】传送门
需要把ID发到论坛里(ID在游戏右下角),管理员审批。 这里回帖ID就行
6 赞
110 回复