在网上看了不少Buff系统的设计,总是不如我的意,所以索性自己思考着做了一个,欢迎大家提意见。
思想:
- 能够被加上Buff的游戏物体,说明他在游戏中的地位已经相当重要,所以我们值得让他继承Mono
- 相对于集中管理的BuffManager,我倾向于每个游戏物体都是自己Buff的管理者,当自己被加上Buff的时候,自己要做出相应的反应
- Buff有两个最基本的共同点 1.持续时间 2.Buff的种类
思维导图
总结
所有能够被施加Buff的游戏物体都继承一个基类CostumEntityLogic(CostumEntityLogic继承自MonoBehaviour)
它包含以下内容
- 持有一个List<BuffBase> ,里面包含自身的所有Buff,并且在Update进行轮询来达成对Buff状态更新的目的
- 包含所有的当物体被施加Buff时所需要做出的反映函数和Buff开关(bool类型)(视情况可以将CostumEntityLogic分为好几个类,例如PlayerLogic,MonsterLogic等)
- AddBuff函数,List<BuffBase>添加Buff,具体的Buff执行逻辑
- 在Update中对List<BuffBase>进行轮询,保证Buff状态的更新
- RemoveBuff函数,List<BuffBase>移除Buff,具体的Buff执行逻辑
下篇博客将会给出具体的代码和实战中的使用