Тайлбар байхгүй

181404010226 464e032832 12.12 15 цаг өмнө
.creator 6690d79c15 zstPrefab 5 сар өмнө
.vercel 440d6f4256 配表优化 4 сар өмнө
assets 464e032832 12.12 15 цаг өмнө
settings d2e1abd646 解决碰撞 1 сар өмнө
.gitignore 6690d79c15 zstPrefab 5 сар өмнө
README.md 976ddac536 6.27优化 5 сар өмнө
dependency-graph.svg 464e032832 12.12 15 цаг өмнө
image_composer.html 05b1105d8c 敌人抛掷bug解决 1 сар өмнө
package-lock.json 1637aa34da 武器伤害修复 3 сар өмнө
package.json 1637aa34da 武器伤害修复 3 сар өмнө
tsconfig.json 6690d79c15 zstPrefab 5 сар өмнө
verify_energy_config.py 4f8d58f533 能量配置更新 3 сар өмнө
游戏配置字段说明文档.md 1fd984b32b 解释文档以及美术优化 3 сар өмнө

README.md

项目总览与开发指南

1. 项目简介

本项目基于 Cocos Creator (v3.x) 打造的休闲射击闯关游戏。玩家在主界面点击「战斗」按钮后进入关卡布阵场景,放置方块并点击确定后正式开始战斗。当所有波次敌人被消灭则胜利;护栏血量降为 0 则失败,分别进入胜/败界面,可选择继续或返回主界面。

2. 目录结构

.
├── assets/                 # Cocos 资源与脚本
│   ├── data/               # 静态配置(武器、敌人等 JSON)
│   ├── scripts/            # TypeScript 业务脚本
│   │   ├── Core/           # 核心工具与基础设施
│   │   ├── CombatSystem/   # 战斗相关逻辑
│   │   ├── LevelSystem/    # 关卡/波次/游戏管理
│   │   └── ShopSystem/     # 商店与经济系统
└── README.md               # 本说明文档

3. 核心架构与设计模式

3.1 BaseSingleton

Core/BaseSingleton.ts 是所有 组件型单例 的基类,实现通用单例注册/回收逻辑。 使用方式:

@ccclass('PhysicsManager')
export class PhysicsManager extends BaseSingleton {
    protected init() {
        // 首次实例化时的初始化逻辑
    }
}
// 其他脚本中
PhysicsManager.getInstance().doSomething();

3.2 EventBus

Core/EventBus.ts 提供全局轻量事件总线,方便模块间解耦通信。

EventBus.getInstance().on(GameEvents.GAME_SUCCESS, () => { /* ... */ }, this);
EventBus.getInstance().emit(GameEvents.GAME_SUCCESS);

3.3 状态机拆分

  • GameManager 负责高层流程调度,应继续拆分为:
    1. UIStateManager – 处理界面打开/关闭
    2. LevelStateManager– 负责关卡进度、波次切换
    3. CombatStateManager – 管理战斗开始/暂停/结束状态
  • 每个状态管理器继承 BaseSingleton 或纯数据类,根据需求选型。

4. 模块说明

4.1 Core

文件 说明
BaseSingleton.ts 单例基类
EventBus.ts 全局事件系统
ConfigManager.ts 统一加载武器/敌人等 JSON 配置
PhysicsManager.ts 物理系统封装(下一步改为继承 BaseSingleton)

4.2 CombatSystem

关键脚本 说明
EnemyController.ts 敌人生成与行为控制(建议改为单例或数据驱动)
BlockManager.ts 方块放置与武器挂载逻辑
BallController.ts 触发武器射击的小球控制

4.3 LevelSystem

关键脚本 说明
GameManager.ts 游戏主体流程(正在拆分)
LevelManager.ts 关卡进度保存/读取(纯数据单例)
LevelConfigManager.ts 异步加载关卡 JSON 配置

4.4 ShopSystem

脚本 说明
ShopManager.ts 处理货币、物品购买,现已继承 BaseSingleton

5. 推荐重构清单

  1. PhysicsManager / EnemyController
    • 继承 BaseSingleton,提供 getInstance() 全局访问。
  2. GameManager 拆分
    • 将 UI 按钮监听、波次逻辑、奖励结算等剥离到独立管理器或 State 类。
  3. 状态机封装
    • 引入简单状态机工具(可手写或使用 npm 包),管理 START → PLAYING → PAUSE → SUCCESS/DEFEAT 生命周期。
  4. 事件总线落地
    • 在 UI、声音、统计等系统中统一监听 GameEvents,消除直接引用。
  5. 配置/资源热更
    • ConfigManager 支持热重载 JSON,提高策划迭代效率。

6. 开发规范

  • TypeScript:开启 strict 模式,充分利用接口、泛型与可选链。
  • 命名:统一使用 PascalCase 类名、camelCase 方法/变量。
  • 组件化:UI Prefab 与脚本一一对应,公共组件抽到 components/ 目录。
  • 注释:关键算法、公共 API 使用 JSDoc;中文注释描述业务逻辑。

7. 运行与发布

  1. 使用 Cocos Creator 打开项目,确认 构建面板勾选 MD5 Cache、代码压缩混淆。
  2. 调试时可在 预览 勾选调试绘制碰撞框。
  3. Release 构建后,将 build/ 目录部署到 Web 服务器或打包原生平台。

© 2024 游戏团队 – 欢迎提交 Issue 与 PR,共建更优秀的代码架构。