本项目基于 Cocos Creator (v3.x) 打造的休闲射击闯关游戏。玩家在主界面点击「战斗」按钮后进入关卡布阵场景,放置方块并点击确定后正式开始战斗。当所有波次敌人被消灭则胜利;护栏血量降为 0 则失败,分别进入胜/败界面,可选择继续或返回主界面。
.
├── assets/ # Cocos 资源与脚本
│ ├── data/ # 静态配置(武器、敌人等 JSON)
│ ├── scripts/ # TypeScript 业务脚本
│ │ ├── Core/ # 核心工具与基础设施
│ │ ├── CombatSystem/ # 战斗相关逻辑
│ │ ├── LevelSystem/ # 关卡/波次/游戏管理
│ │ └── ShopSystem/ # 商店与经济系统
└── README.md # 本说明文档
Core/BaseSingleton.ts 是所有 组件型单例 的基类,实现通用单例注册/回收逻辑。
使用方式:
@ccclass('PhysicsManager')
export class PhysicsManager extends BaseSingleton {
protected init() {
// 首次实例化时的初始化逻辑
}
}
// 其他脚本中
PhysicsManager.getInstance().doSomething();
Core/EventBus.ts 提供全局轻量事件总线,方便模块间解耦通信。
EventBus.getInstance().on(GameEvents.GAME_SUCCESS, () => { /* ... */ }, this);
EventBus.getInstance().emit(GameEvents.GAME_SUCCESS);
BaseSingleton 或纯数据类,根据需求选型。| 文件 | 说明 |
|---|---|
| BaseSingleton.ts | 单例基类 |
| EventBus.ts | 全局事件系统 |
| ConfigManager.ts | 统一加载武器/敌人等 JSON 配置 |
| PhysicsManager.ts | 物理系统封装(下一步改为继承 BaseSingleton) |
| 关键脚本 | 说明 |
|---|---|
| EnemyController.ts | 敌人生成与行为控制(建议改为单例或数据驱动) |
| BlockManager.ts | 方块放置与武器挂载逻辑 |
| BallController.ts | 触发武器射击的小球控制 |
| 关键脚本 | 说明 |
|---|---|
| GameManager.ts | 游戏主体流程(正在拆分) |
| LevelManager.ts | 关卡进度保存/读取(纯数据单例) |
| LevelConfigManager.ts | 异步加载关卡 JSON 配置 |
| 脚本 | 说明 |
|---|---|
| ShopManager.ts | 处理货币、物品购买,现已继承 BaseSingleton |
BaseSingleton,提供 getInstance() 全局访问。State 类。START → PLAYING → PAUSE → SUCCESS/DEFEAT 生命周期。GameEvents,消除直接引用。strict 模式,充分利用接口、泛型与可选链。PascalCase 类名、camelCase 方法/变量。components/ 目录。build/ 目录部署到 Web 服务器或打包原生平台。© 2024 游戏团队 – 欢迎提交 Issue 与 PR,共建更优秀的代码架构。