Skip to content

设计模式

unity-csharp-design-patterns

核心理解

设计模式不是语法,也不是“越复杂越专业”。它其实是:前人把常见代码问题总结出来,并给这些解决套路起了名字

你先记住这个思路:

c
代码重复多     -> 可能需要抽象
状态判断太长   -> 可能用 State
对象创建混乱   -> 可能用 Factory
频繁生成销毁   -> 可能用 Object Pool
系统互相引用   -> 可能用 Observer / Event
算法经常替换   -> 可能用 Strategy

Unity 最常用的几个

Observer 观察者:一个对象变化,多个系统收到通知。 比如玩家血量变化后,UI 更新、音效播放、任务系统检查,不需要它们互相硬找。

c
public event Action<int> HealthChanged;

void TakeDamage(int damage)
{
    hp -= damage;
    HealthChanged?.Invoke(hp);
}

State 状态模式:把一堆 if / switch 拆成不同状态类。 适合角色、NPC、关卡流程:IdleRunAttackDead

Factory 工厂模式:把创建对象的规则集中起来。 比如根据怪物 ID 创建不同怪物,而不是每个脚本都自己 Instantiate

Object Pool 对象池:提前创建,反复复用。 适合子弹、伤害数字、特效、掉落物,减少频繁 Instantiate / Destroy

Strategy 策略模式:同一个接口,不同算法。 比如近战攻击、远程攻击、魔法攻击都实现 IAttackStrategy

Command 命令模式:把一次操作封装成对象。 适合输入缓冲、技能队列、撤销、回放。

Singleton 单例:全局唯一对象。 可以用于少量全局服务,比如音频管理,但不要把所有系统都做成单例,否则项目会越写越黏。

新手学习顺序

先学 Observer,解决 UI、音效、任务互相引用的问题。 再学 State,解决角色和 AI 的状态混乱。 然后学 Factory + Object Pool,解决生成和复用。 接着学 Strategy,解决武器、移动、技能规则替换。 最后学 Command 和 UI 架构模式,处理复杂输入、撤销、回放、界面逻辑。

参考链接

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0