使用指南
实战教程 / 按钮开始游戏和场景切换
用 Button、事件绑定、场景名选择和 Director 节点搭建常见的开始游戏流程。
16
这个案例搭一个常见首页流程:点击“开始”按钮后切换到游戏场景。它适合练习 UI 组件获取、事件绑定、场景名选择和基础排查。
本案例要学会什么
按钮开始游戏看起来简单,但它同时包含四个容易混在一起的问题:
| 问题 | 对应能力 |
|---|---|
| 工作流什么时候启动 | 生命周期入口 |
| 按钮节点在哪里 | 场景节点查找 |
| 点击事件怎么进入工作流 | UI 事件绑定 |
| 游戏场景怎么打开 | Director 场景加载 |
本教程会把这四件事分开验证。不要一上来就直接切场景;先证明按钮事件已经触发,再接入场景加载。这样排查范围会小很多。
场景准备
准备两个场景:
| 场景 | 用途 |
|---|---|
Home | 首页,包含开始按钮 |
Game | 游戏主场景 |
在 Home 场景中创建:
- 一个按钮节点,命名为
StartButton。 - 一个空节点,命名为
HomePanelLogic,用于挂接工作流组件。
创建工作流
创建 HomePanel.sgw,首次打开选择“组件”类型。编译后把生成组件挂到 HomePanelLogic。
这里的挂接关系建议保持清楚:StartButton 只负责显示和接收点击,HomePanelLogic 负责承载流程逻辑。把逻辑组件挂在独立节点上,后续替换按钮皮肤或调整 UI 层级时不容易误删逻辑。
节点搭建
核心流程如下:
启动事件
-> 查找 StartButton 节点
-> 获取 Button 组件
-> 绑定按钮点击事件
-> 事件触发后加载 Game 场景
你会用到这些节点族:
| 任务 | 节点族 |
|---|---|
| 启动入口 | 事件节点 |
| 查找场景节点 | Cocos 节点 |
| 获取 Button 组件 | UI Button 节点 |
| 切换场景 | Director 节点 |
| 打印排查 | 调试节点 |
先做可观测版本
不要一开始就直接切场景。先在按钮事件后接“打印字符串”,文本写:
Start button clicked
预览并点击按钮。能看到输出后,再把后续逻辑换成场景切换。
加入场景切换
在按钮点击事件后接 Director 的场景加载相关节点,把目标场景设置为 Game。如果节点提供场景选择器,优先使用选择器,少手写字符串。
建议保留一条临时打印:
Loading Game scene
这样可以区分“按钮没触发”和“场景加载失败”。
验收标准
完成后按下面顺序验收:
- 运行
Home场景时没有编译错误。 - 入口后的临时打印只出现一次。
- 点击
StartButton后能看到Start button clicked。 - 继续执行时能看到
Loading Game scene。 - 画面切到
Game场景。 - 连续点击不会重复触发多次加载。
如果第 3 步失败,重点查按钮、事件绑定和组件获取。如果第 3 步成功但第 5 步失败,重点查场景名、构建设置和 Director 节点。
常见问题
| 现象 | 检查点 |
|---|---|
| 点击无反应 | 先确认按钮事件后面的打印有没有输出 |
| 找不到 Button | 节点路径是否指向 StartButton,按钮节点上是否真的有 Button 组件 |
| 场景未切换 | 目标场景是否已加入 Cocos 构建设置 |
| 运行时报空值 | 查找节点或获取组件节点的输出是否为空 |
| 重复触发 | 是否在多次启用时重复绑定事件 |
扩展练习
- 点击按钮前先禁用按钮,避免连续点击。
- 切场景前播放按钮音效。
- 切场景前写入全局状态,例如当前关卡编号。
- 用枚举管理场景状态,而不是散落字符串。