Appearance
设计模式
核心理解
设计模式不是语法,也不是“越复杂越专业”。它其实是:前人把常见代码问题总结出来,并给这些解决套路起了名字。
你先记住这个思路:
c
代码重复多 -> 可能需要抽象
状态判断太长 -> 可能用 State
对象创建混乱 -> 可能用 Factory
频繁生成销毁 -> 可能用 Object Pool
系统互相引用 -> 可能用 Observer / Event
算法经常替换 -> 可能用 StrategyUnity 最常用的几个
Observer 观察者:一个对象变化,多个系统收到通知。 比如玩家血量变化后,UI 更新、音效播放、任务系统检查,不需要它们互相硬找。
c
public event Action<int> HealthChanged;
void TakeDamage(int damage)
{
hp -= damage;
HealthChanged?.Invoke(hp);
}State 状态模式:把一堆 if / switch 拆成不同状态类。 适合角色、NPC、关卡流程:Idle、Run、Attack、Dead。
Factory 工厂模式:把创建对象的规则集中起来。 比如根据怪物 ID 创建不同怪物,而不是每个脚本都自己 Instantiate。
Object Pool 对象池:提前创建,反复复用。 适合子弹、伤害数字、特效、掉落物,减少频繁 Instantiate / Destroy。
Strategy 策略模式:同一个接口,不同算法。 比如近战攻击、远程攻击、魔法攻击都实现 IAttackStrategy。
Command 命令模式:把一次操作封装成对象。 适合输入缓冲、技能队列、撤销、回放。
Singleton 单例:全局唯一对象。 可以用于少量全局服务,比如音频管理,但不要把所有系统都做成单例,否则项目会越写越黏。
新手学习顺序
先学 Observer,解决 UI、音效、任务互相引用的问题。 再学 State,解决角色和 AI 的状态混乱。 然后学 Factory + Object Pool,解决生成和复用。 接着学 Strategy,解决武器、移动、技能规则替换。 最后学 Command 和 UI 架构模式,处理复杂输入、撤销、回放、界面逻辑。
参考链接