首页/ 第 17 章 · 发布与进阶修炼/ 第 291 课
LESSON 291 · 发布与进阶修炼

进阶修炼:设计模式入门

设计模式入门完成。下一课学数据驱动。

⏱ 约 16 分钟📊 难度:入门🗂 第 17 章 · 发布与进阶修炼📍 第 291 / 300 课
课程进度
291 / 300

🎯本节学习目标

  • 掌握核心模式
  • 理解模式应用
  • 实战运用

🚀课程导读

“高手都用的套路”叫设计模式。本课讲游戏开发最常用的几个,个个都在前面用过。

单例与对象池

两个“保底”模式。

  1. 【单例 Singleton】全局唯一实例(第 86 课):
  2. AudioManager/GameManager 都用过。
  3. 【要点】Awake 检查、DontDestroyOnLoad。
  4. 【对象池 Object Pool】复用对象省 GC(第 269 课):
  5. 子弹/特效/敌人。
  6. 【要点】Get/Release/重置。
  7. 【关系】这两个是 Unity 里“出场率最高”的模式。
  8. 【应用】你现在就能手写(前面都用过)。
  9. 【完成】两个“老朋友”回顾。
  10. 【注意】单例别滥用(全局状态难测)。
  11. 【推荐】管理器用单例、高频物用池。
💡
单例(全局一个)+ 对象池(循环复用)= 游戏两大基础模式。

观察者与状态机

两个“进阶”模式。

  1. 【观察者 Observer】事件/订阅(第 274 课):
  2. 数据变化通知多个订阅者(UI/音效)。
  3. 【要点】事件发布/订阅/取消订阅。
  4. 【工厂 Factory】创建对象封装:
  5. public static class WeaponFactory { public static Weapon Create(string type) { ... } }
  6. 【要点】创建逻辑集中、便于扩展。
  7. 【状态机 State Machine】对象在不同状态(第 131 课):
  8. 敌人(巡逻/追击/攻击)、玩家(正常/受伤/死亡)。
  9. 【代码状态机】
  10. enum State { Patrol, Chase, Attack }
  11. State state;
  12. void Update() { switch(state) { case State.Patrol: Patrol(); break; ... } }
  13. 【完成】四个模式“齐了”。
  14. 【理解】模式是“思路”不是“模板”,按需套用。
  15. 【推荐】状态机是 AI 和复杂角色必备。
  16. 【实战】用代码状态机重构敌人 AI(第 211/258 课)。
模式一句话:观察者(通知)、工厂(创建)、状态机(行为切换)。都会=合格开发者。

常见错误与排查

错误:状态机状态多到乱?
原因:全塞 switch
解决:每个状态一个类(状态模式,进阶);或用 Animator 状态机。

动手练习

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

  • 用代码状态机重构敌人
  • 用工厂模式创建武器
  • 回顾单例与对象池

本节小结

设计模式入门完成。下一课学数据驱动。

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

← 上一课进阶修炼:面向对象编程