武器解锁问题修复指南.md 3.4 KB

武器解锁问题修复指南

问题描述

当前关卡是第五关,但武器只解锁到第三关,按理说应该解锁到第四关的西瓜炸弹。

问题原因

可能的原因包括:

  1. 武器配置加载时序问题(已修复)
  2. 存档数据中的maxUnlockedLevel与实际关卡进度不同步
  3. 武器解锁逻辑在关卡完成时未正确触发

修复方案

方案1:使用浏览器控制台诊断

  1. 打开游戏页面
  2. 按F12打开开发者工具
  3. 切换到Console(控制台)标签
  4. 运行以下命令进行诊断:

    // 诊断武器解锁问题
    window.upgradeController?.diagnoseWeaponUnlockIssue();
    

方案2:强制同步武器解锁状态

如果诊断发现武器解锁状态不正确,运行以下命令修复:

// 强制同步武器解锁状态
window.upgradeController?.forceSyncWeaponUnlocks();

方案3:使用调试脚本

  1. 在浏览器控制台中运行调试脚本(已创建debug_save_data.js)
  2. 查看存档数据状态
  3. 使用修复函数:

    fixWeaponUnlocks();
    

方案4:手动修复存档数据

如果以上方案都不起作用,可以手动修复localStorage中的存档数据:

// 获取当前存档数据
const saveData = JSON.parse(localStorage.getItem('playerData'));

// 检查maxUnlockedLevel
console.log('当前最大解锁关卡:', saveData.maxUnlockedLevel);

// 如果maxUnlockedLevel小于5,手动设置
if (saveData.maxUnlockedLevel < 5) {
    saveData.maxUnlockedLevel = 5;
    localStorage.setItem('playerData', JSON.stringify(saveData));
    console.log('已更新最大解锁关卡为5');
}

// 手动解锁西瓜炸弹
if (!saveData.inventory) saveData.inventory = { weapons: {} };
if (!saveData.inventory.weapons) saveData.inventory.weapons = {};

saveData.inventory.weapons['watermelon_bomb'] = {
    id: 'watermelon_bomb',
    level: 1,
    experience: 0,
    rarity: 'common',
    unlockTime: Date.now()
};

localStorage.setItem('playerData', JSON.stringify(saveData));
console.log('已手动解锁西瓜炸弹');

// 刷新页面查看效果
location.reload();

代码修复内容

1. 修复了异步加载顺序问题

  • loadWeaponsConfig()改为异步等待
  • 确保武器配置在初始化检查之前完全加载

2. 增强了调试功能

  • 添加了diagnoseWeaponUnlockIssue()方法用于问题诊断
  • 改进了forceSyncWeaponUnlocks()方法的日志输出
  • 将UpgradeController实例暴露到全局window对象

3. 改进了初始化流程

async start() {
    // 先加载武器配置
    await this.loadWeaponsConfig();
    
    // 加载关卡配置
    await this.loadLevelConfigs();
    
    // 初始化武器数据
    this.initializeWeapons();
    
    // 初始化时检查武器解锁状态
    this.checkInitialWeaponUnlocks();
    
    // 刷新UI
    this.refreshWeaponList();
    this.upgradePanel.active = false;
}

预防措施

  1. 确保关卡完成事件正确触发SaveDataManager.completeLevel()
  2. 定期检查maxUnlockedLevel与实际游戏进度的一致性
  3. 在游戏启动时进行武器解锁状态验证

测试步骤

  1. 重新启动游戏
  2. 检查武器解锁状态是否正确
  3. 完成一关后验证新武器是否自动解锁
  4. 使用诊断工具确认数据一致性

如果问题仍然存在,请提供控制台输出的诊断信息以便进一步分析。