Script Graph

使用指南

实战教程 / 打砖块案例拆解

把完整打砖块示例拆成 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 物理组件、碰撞体、刚体类型和场景设置

下一步

把这个案例当成拆分模板:

  1. 先列出系统职责。
  2. 每个职责一个组件工作流或函数库。
  3. 每条工作流先接调试输出。
  4. 用事件、变量、结构体和枚举建立清晰边界。