使用指南
实战教程 / 打砖块案例拆解
把完整打砖块示例拆成 PlayButton、Game、Player 三条工作流,说明真实项目如何组织节点。
16
打砖块案例适合用来理解中小型玩法如何拆分工作流。它不是把所有节点塞进一张图,而是按职责拆成多个 .sgw。
案例结构
| 工作流 | 负责内容 |
|---|---|
PlayButton.sgw | 按钮组件获取、点击事件、场景切换 |
Game.sgw | 关卡启动、动态创建砖块、资产包加载、嵌套循环 |
Player.sgw | 键盘输入、枚举 Switch、物理控制、受控表达式 |
这种拆法的核心是:UI、关卡和玩家行为分别维护,互相只通过明确事件、变量或场景节点引用协作。
PlayButton:从 UI 进入游戏
PlayButton 只关心开始按钮:
启动事件
-> 获取 Button
-> 绑定点击事件
-> 切换到游戏场景
它不应该负责生成砖块或控制玩家。按钮逻辑越单纯,后面改 UI 时越轻松。
Game:生成关卡对象
Game 负责关卡层面的初始化:
启动事件
-> 加载资产包
-> 加载 Brick Prefab
-> 外层循环行
-> 内层循环列
-> 实例化砖块
-> 设置父节点和位置
这里会用到资产管理、Prefab、循环、数学和 Cocos 节点操作。建议每完成一层循环就打印行列索引,先确认数量和坐标,再接实例化。
Player:输入和物理控制
Player 负责玩家相关行为:
启动事件
-> 绑定键盘事件
-> 根据按键更新移动方向
-> 枚举 Switch 判断方向
-> 操作 2D 刚体或节点位置
方向不要散落成多个字符串。更稳的做法是建一个 MoveDirection 枚举,再用枚举 Switch 分支。
组织建议
- UI 事件和玩法初始化分离。
- 生成大量对象时,用循环和函数库减少重复节点。
- 频繁传递的一组数据,用结构体打包。
- 固定状态和方向,用枚举管理。
- 对象控制逻辑放在对象自己的组件工作流里。
排查顺序
| 现象 | 先看哪里 |
|---|---|
| 开始按钮无效 | PlayButton 的点击事件是否打印 |
| 场景切换成功但没砖块 | Game 的启动事件是否触发 |
| 砖块数量不对 | 循环次数、行列索引、坐标计算 |
| Prefab 没生成 | 资产包名、资源路径、Prefab 类型 |
| 玩家不动 | 键盘事件、方向枚举、刚体或节点引用 |
| 物理不生效 | 2D 物理组件、碰撞体、刚体类型和场景设置 |
下一步
把这个案例当成拆分模板:
- 先列出系统职责。
- 每个职责一个组件工作流或函数库。
- 每条工作流先接调试输出。
- 用事件、变量、结构体和枚举建立清晰边界。