LevelManager 已经改为纯 TypeScript 类,不需要挂载到任何节点上!
// 获取 LevelManager 实例(自动初始化)
const levelManager = LevelManager.getInstance();
// 获取当前关卡
const currentLevel = levelManager.getCurrentLevel();
// 完成关卡
levelManager.completeLevel(1, 1000, 3);
// 检查关卡是否解锁
const isUnlocked = levelManager.isLevelUnlocked(2);
GameManager 已经正确集成了 LevelManager:
// 在 initializeManagers() 中
this.levelManager = LevelManager.getInstance();
// 使用示例
if (this.levelManager) {
const currentLevel = this.levelManager.getCurrentLevel();
this.levelManager.completeLevel(currentLevel, score, stars);
}
Canvas
├── GameLevelUI
│ ├── GameManager (挂载 GameManager 组件)
│ ├── LevelConfigManager (挂载 LevelConfigManager 组件)
│ └── ... (其他游戏UI)
└── ... (其他Canvas子节点)
❌ 不要创建 LevelManager 节点
❌ 不要添加 LevelManager 组件
在 GameManager 节点上:
GameManager 组件getInstance() 初始化在控制台中检查:
// 检查 LevelManager 是否正常工作
const levelManager = window.LevelManager?.getInstance();
if (levelManager) {
console.log('当前关卡:', levelManager.getCurrentLevel());
console.log('最大解锁关卡:', levelManager.getMaxUnlockedLevel());
} else {
console.error('LevelManager 未正确初始化');
}
// 获取 LevelManager 实例
const lm = LevelManager.getInstance();
// 查看当前状态
console.log('当前关卡:', lm.getCurrentLevel());
console.log('最大解锁关卡:', lm.getMaxUnlockedLevel());
// 解锁所有关卡(调试用)
lm.unlockAllLevels(10);
// 重置所有进度
lm.resetAllProgress();
// 完成当前关卡
lm.completeLevel(lm.getCurrentLevel(), 1000, 3);
LevelManager.getInstance()getInstance() 时自动初始化| 管理器 | 类型 | 是否挂载 | 主要用途 |
|---|---|---|---|
| LevelManager | 纯类 | ❌ 不挂载 | 关卡进度数据管理 |
| LevelConfigManager | Component | ✅ 需挂载 | 关卡配置文件管理 |
| GameManager | Component | ✅ 需挂载 | 游戏状态和UI管理 |
| ConfigManager | 纯类 | ❌ 不挂载 | 游戏配置数据管理 |
| ShopManager | 纯类 | ❌ 不挂载 | 商店数据管理 |
LevelManager.getInstance()这种设计使得 LevelManager 更加简洁、高效,并且易于维护!