一、游戏框架专用模式(最常用)
- 1. 单例模式(Singleton)
- 虽然 GoF 有,但 Unity 里用法完全不一样
- 常见场景:全局管理器(GameManager / UIManager / AudioManager)
- 常见写法:
DontDestroyOnLoad/ 静态实例 / 泛型单例 - 进阶:线程安全单例 / 弱单例
- 2. 组件模式(Component Pattern)
- Unity 原生架构就是这个
- 一个 GameObject 由多个 Component 组合
- 替代继承,灵活扩展
- 例子:Move / Attack / Health 分开挂载
- 3. 事件总线 / 消息中心(Event Bus / Message System)
- 比观察者模式更实用、更解耦
- 脚本之间不会互相引用,发消息即可
- 场景切换 / 伤害飘字 / 任务触发都用它
- 4. 服务定位器(Service Locator)
- 比单例灵活,更好测试
- 统一获取各种服务:音频 / 存档 / 网络
- 方便替换实现(测试用假服务)
- 5. 依赖注入(DI)
- 现在 Unity 高端项目标配
- 常用框架:Zenject / VContainer
- 自动依赖注入,不用
FindObjectOfType
二、游戏逻辑专用模式
- 1. 有限状态机(FSM)
- 角色 AI / 技能 / 游戏流程必备
- 玩家状态:Idle / Run / Attack / Jump
- 敌人 AI:巡逻 → 追击 → 攻击 → 逃跑
- 2. 分层状态机 / 状态栈(HFSM / State Stack)
- 比普通 FSM 更强大
- 技能可以打断技能
- 菜单弹出 / 暂停 / 过场都用栈
- 3. 行为树(Behavior Tree)
- 高级敌人 AI 标配
- 常见:行为树插件 / NodeCanvas / Behavior Designer
- 4. 目标导向行动规划(GOAP)
- 更智能的 AI(比如生存游戏 / 策略游戏)
- 5. 命令模式(Command Pattern)
- 游戏里很实用
- 技能按键 / 回放系统 / 撤销操作
- 可序列化 / 可重做 / 可网络同步
- 6. 对象池(Object Pool)
- Unity 性能优化第一模式
- 子弹 / 特效 / 怪物 / 碎片:不 Instantiate/Destroy
- 复用对象,极大减少 GC
- 7. 数据驱动(Data-Driven)
- 技能表 / 道具表 / 关卡数据
- 完全分离数据与逻辑
三、性能 & 资源管理模式
- 1. 资源管理(Addressables / 资源加载模式)
- 异步加载
- 资源引用计数
- Bundle 管理
- 2. 脏标记(Dirty Flag)
- 只在数据变化时更新
- UI / 状态同步常用
- 3. 批处理 / 数据局部性
- ECS 核心思想
- 把同类数据放一起,提高缓存命中率
四、ECS 专用模式(Unity DOTS)
- 1. 实体 - 组件 - 系统(ECS)
- 现代 Unity 核心架构
- Entity(实体)
- Component(数据)
- System(逻辑)
- 2. Archetype 模式
- ECS 内部用来分组同类实体
- 3. 任务并行 / 作业系统
IJobEntity- 多线程安全 / 无 GC
五、UI 专用模式
- 1. MVC / MVVM / MVP
- UI 框架必用
- MVC:模型 - 视图 - 控制器
- MVVM:数据绑定,UI 自动刷新
- 适合:背包 / 技能面板 / 角色面板
- 2. UI 栈(UI Stack)
- 窗口层级管理
- 返回键 / 关闭弹窗逻辑
六、网络与存档模式
- 1. 快照(Snapshot)
- 帧同步 / 回放 / 存档
- 保存某一时刻完整游戏状态
- 2. 状态同步 / 状态插值
- 网络游戏平滑移动
- 3. 序列化(Serializable)
- Json / Binary / Protobuf 存档
- 热更配置
- 4. 双缓冲(Double Buffer)
- 渲染 / 网络帧同步常用
- 避免读写冲突
七、物理与动画模式
- 1. 动画状态机(Animator Controller)
- Unity 内置,本质就是状态机扩展
- 2. 碰撞过滤 / 层掩码
- Layer / Tag / 物理矩阵管理