Unity框架之缓存池模块

如今的Unity提供官方写好的缓存池,但我还是打算讲讲自定义缓存池怎么写。

缓存池用途

在射击游戏中,游戏中存在着频繁的子弹创建和销毁工作。如果内存大量频繁地创建和销毁物体,势必会带来很明显的卡顿和性能开销。游戏开发者思考,我是不是可以重复利用固定几个物体、减少内存浪费和性能开销?于是有了缓存池。

思路

以射击游戏为例,先去思考怎么实现子弹缓存效果,我的想法是,场上能看见的子弹也就五、六个,射出去的子弹超出玩家视野后、进行重复利用。于是分类:子弹类——子弹1、子弹2、子弹3、子弹4...
然而缓存池不一定只有子弹类,可能还有炮弹类、垃圾类等等,最后划分大概是这样的一张图表:
物体
子弹类 炮弹类 垃圾类 ...
子弹二 炮弹二 垃圾二 ...
子弹三 炮弹三 垃圾三 ...

这就类似于我们的衣柜,衣柜里有不同的抽屉,每个抽屉里放着不同的衣服,于是联想到字典和List,用Dictionary<string,List>来存储