fix: 修复批量缺陷并优化性能与交互体验

修复移动端摇杆输入失效问题,修正Rex摇杆的力值使用逻辑
重构输入互斥为计数模型,新增ui:opened事件解决纪念页穿透输入问题
修复引导箭头首帧闪现问题,设置初始透明度过渡
修复hasSave误判存档问题,新增合法景点id校验集
修复底图加载失败白屏问题,新增占位底图降级逻辑
移除无用的Phaser照片预加载,节省约65MB纹理显存
优化性能:缓存景点索引与解锁集合,跳过UI锁期间的世界更新
升级纪念页支持点击照片复用拍立得弹窗放大,新增照片降级
修复HUD指针事件不生效的CSS特异性问题
同步更新事件协议文档与输入锁模型说明
This commit is contained in:
guoxichao committed 2026-10-17 20:54:23 +08:00
1 parent a404e42ca8
commit b0467054c8
11 files changed
+254 -103

No files matched your search

+14
View File
@@ -3,6 +3,20 @@
本项目所有显著变更均记录于此。
版本号:`vYYYY.MM.DD-XX`;类型标签:[Add] / [Change] / [Fix] / [Remove] / [Doc] / [Chore]
## v2026.10.17-01
18:27 · 全量代码审查后的缺陷修复与性能优化(不改变玩法与视觉基调)。
- [Fix] 移动端摇杆正方向失效:rex 的 `forceX/forceY` 是像素级位移而非 [-1,1],且正上/下/左/右必有一轴为 0;改用插件 `noKey` 判定推动状态
- [Fix] 纪念页显示期间地图输入未锁定可被穿透操作:输入互斥改为 `uiLocks` 计数模型,新增 `ui:opened` 事件由各 UI 组件自行加锁
- [Fix] 底图加载失败导致白屏:新增占位底图降级;MapScene 底图改用 `setDisplaySize` 铺满世界
- [Fix] `hasSave()` 误报有存档:改以解锁集合判定;`unlock()` 增加非法 id 校验(顺带把加载期 O(n) 过滤改为 O(1))
- [Fix] 引导箭头首帧闪现(初始 alpha 归零);HUD `pointer-events: none` 被 `#ui > *` 特异性覆盖而失效
- [Change] 性能:缓存解锁集合与景点索引,消除每帧 `getSnapshot()` 分配与 `SPOTS.find` 线性查找;UI 持锁期间直接跳过世界更新
- [Remove] 移除从未被消费的 Phaser 照片预加载与 `buildPhotoPlaceholder`(照片由 DOM `<img>` 按需加载,原实现白占约 65MB 纹理显存)
- [Change] 纪念页九宫格改用真实照片(缺失降级为景点图标)并支持点击复用拍立得弹窗放大重看
- [Doc] 同步 `docs/spec.md` 事件协议表与输入锁模型说明
## v2026.10.16-01
首次完整实现(M1–M3):可玩核心 + 完整体验 + 手账美化(全占位资源)。