微信场景:离开、返回与恢复
在微信里玩游戏,离开和回来很常见。接消息、锁屏、打开其他界面之后,玩家会期待刚才的进展仍然可理解。你需要把生命周期当成体验的一部分。
先确定你用的运行环境
普通微信小程序通常以页面和组件体系组织界面;微信小游戏面向游戏运行场景,常借助 Canvas 或游戏引擎。两者共享一些平台能力和命名,但不能把普通小程序页面跳转、浏览器 DOM 或插件能力默认视为小游戏都能直接使用。
本指南主要面向微信小游戏,UX 方法不绑定 Cocos 等具体引擎。实际能力以微信小游戏官方指引及具体 API 文档为准。
三种“回来”,不要混为一谈
| 情况 | 需要确认什么 | 示例行为 |
|---|---|---|
| 热返回 | 进程和当前局是否仍在 | 恢复暂停状态,等待玩家操作 |
| 冷启动 | 是否有有效检查点 | 读取、校验并说明上次进度 |
| 从其他入口进入 | 入口参数和当前进度有何关系 | 按正式规则决定展示目标内容或继续选项 |
官方 wx.onHide 监听隐藏到后台,wx.onShow 监听回到前台。事件本身不等于“游戏自动暂停”或“存档一定成功”,这些行为需要你的实现。
检查点要覆盖足够的数据
完整还原同一局通常不止关卡号:还可能需要棋盘、剩余步数、目标进度、随机数状态、正在进行的效果、资源确认记录和存档版本。
关键进展后保存检查点,后台时补充处理,比只在离开时临时发起一次异步写入更有恢复空间。后台回调不应被当成“必定有充足时间执行所有保存”的保证。
动手体验恢复与损坏
交互实验正在准备…请启用 JavaScript。

不把本地缓存当成永不丢失的数据
wx.setStorage 是本地缓存接口,会覆盖相同 key 的原值;官方也说明用户清理或系统空间清理可能影响数据。因此长期进度和权威资源需要根据产品要求考虑服务端确认、冲突处理与恢复能力。
读写失败时不要显示已保存。存档损坏时先保护可用记录,验证版本、字段与取值;无法恢复时解释会丢失哪些临时进度。不要把两个互相矛盾的存档字段拼接成不可能的一局。
给 AI 的要求
请按微信小游戏场景设计生命周期处理,区分热返回和冷启动。
列出完整检查点字段、保存触发时机、校验规则和失败反馈。
后台暂停输入、计时与相关音频;返回时不自动消耗玩家资源。
明确哪些是官方 API 能力,哪些是我们必须实现的游戏逻辑。
平台来源与验证边界
核查日期:2026-11-01。来源:wx.onHide、wx.onShow、wx.setStorage。浏览器实验没有调用这些接口;正式项目需要在目标基础库、客户端、设备和入口组合下验证。
动手:在真实设备上分别锁屏、切聊天、结束进程再打开,记录恢复到了哪里,以及玩家能否理解这个结果。