GameStateSetupGuide.md 4.5 KB

游戏状态管理系统设置指南

本指南将帮助你在Cocos Creator中正确设置游戏状态管理系统,实现血量监控和胜利失败UI显示功能。

📋 前置条件

确保你的场景中已经有以下节点结构:

Canvas/
├── GameLevelUI/
│   ├── HeartNode/
│   │   └── HeartLabeld (Label组件,显示血量)
│   ├── EnemyController (挂载EnemyController脚本)
│   └── GameManager (挂载增强版GameManager脚本)
├── GameSuccess (游戏成功UI,初始设为不激活)
└── GameDefeat (游戏失败UI,初始设为不激活)

🔧 设置步骤

1. 配置增强版GameManager组件

Canvas/GameLevelUI/GameManager 节点的Inspector面板中设置以下属性:

原GameManager属性:

  • Ball Controller: 拖入BallController节点
  • Block Selection UI: 拖入BlockSelectionUI节点
  • Game Area: 拖入GameArea节点
  • Enemy Manager: 拖入EnemyController节点

游戏状态管理属性:

  • Heart Label Node: 拖入 Canvas/GameLevelUI/HeartNode/HeartLabeld 节点
  • Game Success UI: 拖入 Canvas/GameSuccess 节点
  • Game Defeat UI: 拖入 Canvas/GameDefeat 节点

游戏配置属性:

  • Wall Health: 设置墙体初始血量(如1200)
  • Initial Health: 设置初始血量(如100)
  • Check Interval: 设置检查间隔(建议1.0秒)

2. 设置成功失败UI按钮

GameSuccess UI 按钮结构

Canvas/GameSuccess/
├── NextLevelBtn (Button组件)
├── RestartBtn (Button组件)
├── MainMenuBtn (Button组件)
└── ShopBtn (Button组件)

GameDefeat UI 按钮结构

Canvas/GameDefeat/
├── RestartBtn (Button组件)
├── MainMenuBtn (Button组件)
├── ShopBtn (Button组件)
└── ReviveBtn (Button组件)

注意: 按钮节点名称必须严格按照上述命名,脚本会根据名称自动查找和绑定事件。

3. 初始化其他管理器

确保场景中有以下管理器节点:

  1. LevelManager: 在某个持久节点上挂载 LevelManager 脚本
  2. ShopManager: 在某个持久节点上挂载 ShopManager 脚本
  3. ConfigManager: 在某个持久节点上挂载 ConfigManager 脚本

🎮 工作流程

血量监控流程

  1. GameManager 每秒检查 HeartLabeld 的文本内容
  2. 从文本中提取数字作为当前血量
  3. 当血量降为0时,自动触发游戏失败

敌人检测流程

  1. GameManager 通过 EnemyController 获取当前敌人数量
  2. 当敌人数量为0时,自动触发游戏成功

UI交互流程

  1. 游戏结束时显示对应的成功/失败UI
  2. GameManager 处理所有按钮点击事件
  3. 按钮功能包括:下一关、重新开始、返回主菜单、商店、复活等

🔍 调试功能

GameManager调试方法

// 在控制台或其他脚本中调用
const gameManager = find('Canvas/GameLevelUI/GameManager').getComponent('GameManager');

// 强制触发游戏成功
gameManager.forceGameSuccess();

// 强制触发游戏失败
gameManager.forceGameDefeat();

// 手动设置血量
gameManager.setHealth(50);

// 造成伤害
gameManager.takeDamage(20);

⚠️ 注意事项

  1. 节点路径: 确保所有节点路径与代码中的路径完全一致
  2. 组件依赖: GameManager依赖EnemyController,确保EnemyController正常工作
  3. UI初始状态: GameSuccess和GameDefeat节点初始应设为不激活状态
  4. 按钮命名: UI按钮的节点名称必须与代码中的查找名称一致
  5. 管理器实例: LevelManager和ShopManager需要正确初始化为单例
  6. 脚本位置: 增强版GameManager脚本位于 LevelSystem/GameManager.ts

🎯 扩展功能

你可以根据需要扩展以下功能:

  1. 音效支持: 在胜利失败时播放音效
  2. 动画效果: 添加UI显示动画
  3. 得分计算: 实现更复杂的得分系统
  4. 星级评定: 根据表现给出星级评价
  5. 成就系统: 集成成就解锁功能

🐛 常见问题

Q: 血量检测不工作? A: 检查HeartLabeld节点路径和Label组件是否正确设置

Q: 按钮点击无响应? A: 检查按钮节点命名是否正确,Button组件是否添加

Q: 敌人检测不准确? A: 确保EnemyController的getCurrentEnemyCount方法正常工作

Q: 管理器获取失败? A: 检查LevelManager和ShopManager是否正确初始化为单例

Q: 找不到GameManager脚本? A: 确保使用的是 LevelSystem/GameManager.ts 中的增强版GameManager