享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。
See More:Refactoring.Guru
在游戏中,同时有一万个敌人。
暂时不考虑渲染压力,单纯设计一个敌人属性的实现。
敌人的属性包括:
- 敌人的血量(各不相同)
- 敌人的身高(各不相同)
- 敌人的名字(根据职级不同而不同,职级有四种:新兵,中士,上士,上尉)
- 敌人的图片路径(上尉是a.png,其他都是b.png)
- 敌人死亡,攻击,受击时播放的音效(全都一样,string[3])
- 敌人的颜色(全都是Color.New(128,0,128,255))
- 敌人的血量上限(根据职级不同而变,依次是100,200,500,1000)
- 敌人的移动速度( 根据职级不同而变,依次是 1.0 , 2.0 , 3.0, 4.0,double类型)
你会怎么实现?
查看 Bad Code里的代码
若你考虑用枚举实现,查看博客详解
查看 Example 里的代码。
专题 | Unity3D中的设计模式 | 问渠 (wenqu.site)