首页/ 第 16 章 · 性能优化/ 第 277 课
LESSON 277 · 性能优化

多场景管理与场景切换

多场景管理完成。下一课做性能测试与基准。

⏱ 约 14 分钟📊 难度:入门🗂 第 16 章 · 性能优化📍 第 277 / 300 课
课程进度
277 / 300

🎯本节学习目标

  • 掌握场景组织
  • 掌握场景切换
  • 掌握数据传递

🚀课程导读

“游戏一堆场景怎么管”——多场景组织、切换与数据传递。本课掌握。

场景组织与切换

“场景”是关卡。

  1. 【场景清单】
  2. MainMenu(主菜单)、Level1/2/3(关卡)、GameOver(结束)。
  3. 【Build Settings】File → Build Settings → 把所有场景拖入 Scenes In Build(顺序=索引)。
  4. 【切换】SceneManager.LoadScene("Level1");
  5. 【索引】SceneManager.LoadScene(1);
  6. 【当前】SceneManager.GetActiveScene().name;
  7. 【异步】LoadSceneAsync(第 268 课)。
  8. 【单一场景 vs 多场景】小游戏单场景+切场景;开放世界多场景叠加(进阶)。
  9. 【流程】开始→主菜单→关卡→结束→返回。
  10. 【注意】场景没加进 Build 会报错“Scene not found”。
  11. 【完成】场景“通了”!
💡
场景管理 = Build 列表(登记)+ LoadScene(切换)+ 组织(菜单/关卡/结束)。

跨场景数据

数据“带到下个场景”。

  1. 【问题】切场景对象销毁,数据丢失。
  2. 【方案1 静态类】用静态字段存跨场景数据:
  3. public static class GameState { public static int score; public static int level; }
  4. 切场景后 GameState.score 还在。
  5. 【方案2 单例 DontDestroyOnLoad】管理器跨场景(第 172 课):
  6. GameManager/PlayerStats 常驻。
  7. 【方案3 PlayerPrefs】持久化存档(第 220 课)。
  8. 【选择】临时数据(当前局)用静态/单例;持久数据用 PlayerPrefs/JSON。
  9. 【注意】DontDestroyOnLoad 对象在多个场景间保留:别重复创建(单例检查)。
  10. 【UI 引用】UI 在各场景内重建:常驻管理器用“场景加载事件”重新绑定 UI(进阶)。
  11. 【测试】主菜单选关 → 关卡读取数据 → 结束回传。
  12. 【完成】数据“跨场景”。
  13. 【推荐】GameManager 常驻 + PlayerPrefs 持久。
跨场景三方案:静态类(临时)、单例(管理器)、PlayerPrefs(持久)。按需选。

常见错误与排查

错误:切场景报错找不到场景?
原因:场景没进 Build Settings
解决:File → Build Settings 把所有场景加进列表;用场景名与索引对应。

动手练习

课后小任务(做出来才算真的学会)

  • 把多场景加进 Build
  • 实现菜单↔关卡↔结束切换
  • 用静态类传递分数

本节小结

多场景管理完成。下一课做性能测试与基准。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课调试技巧(断点与日志)