前言
为啥要先写对象池的笔记,因为其他模块大部分都要用到,这块看明白了,方便以后理解,这篇文章主要是讲对象池系统的原理和组成,下一篇会介绍对象池的应用。
对象池系统简介
对象池系统主要是为了对象的复用,优化性能,减少垃圾回收的机制的触发,常用于需要频繁创建和销毁的对象。对象池系统实际上是包含了多个队列数据结构的对象池,对象池系统本身是个字典类型。
对象池脚本代码结构
结构的话,我单独做了个xmind的结构图,可以看下
负责外部调用的静态方法全部在PoolSystem脚本内,进行统一管理。包括:
初始化对象池
获取对象
存入对象
清除单个对象池
清除所有的对象池
对象池实现
为了方便使用,所有的对象池被分成2个大类,一个是Object类,一个是GameObject类。
Object类的所有的对象池
主要由ObjectPoolModule和ObjectPoolData构成,前者提供相应的对外的调用方法,后者是Object对象池的数据类,单个对象池是一个队列(Queue)的数据结构。队列的特点就是先进先出。
ObjectPoolModule
主要是对所有的Object对象池的管理,包括:
初始化对象池
从对象池中取出对象
把对象放入对应的对象池
删除某个对象池
删除所有的Object对象池
ObjectPoolData
主要是对单个Object对象池的内部的操作,包括:
从对象池中取出对象
把对象放入对应的对象池
销毁某个对象(可以选择销毁的对象是否要用对象池回收)
GameObject类的所有的对象池
GameObject类的对象池的结构跟Object的结构一样,只不过是更换了对象的类型。可以参考Object类的所有的对象池的结构类型。
总结
对象池系统不再局限于对实体对象(GameObject)的管理,还可以对普通对象(Object)进行管理,大大的方便了资源的复用。
下一篇文章就记录下对象池系统到底要如何使用。