Unity框架:JKFrame2.0学习笔记(三)——对象池系统(1)
  v5bEezpf7PPs 2023年11月02日 116 0

前言

为啥要先写对象池的笔记,因为其他模块大部分都要用到,这块看明白了,方便以后理解,这篇文章主要是讲对象池系统的原理和组成,下一篇会介绍对象池的应用。

对象池系统简介

对象池系统主要是为了对象的复用,优化性能,减少垃圾回收的机制的触发,常用于需要频繁创建和销毁的对象。对象池系统实际上是包含了多个队列数据结构的对象池,对象池系统本身是个字典类型。

对象池脚本代码结构

结构的话,我单独做了个xmind的结构图,可以看下

Unity框架:JKFrame2.0学习笔记(三)——对象池系统(1)_游戏开发

负责外部调用的静态方法全部在PoolSystem脚本内,进行统一管理。包括:

初始化对象池

获取对象

存入对象

清除单个对象池

清除所有的对象池


对象池实现

为了方便使用,所有的对象池被分成2个大类,一个是Object类,一个是GameObject类。

Object类的所有的对象池

主要由ObjectPoolModule和ObjectPoolData构成,前者提供相应的对外的调用方法,后者是Object对象池的数据类,单个对象池是一个队列(Queue)的数据结构。队列的特点就是先进先出。

ObjectPoolModule

主要是对所有的Object对象池的管理,包括:

初始化对象池

从对象池中取出对象

把对象放入对应的对象池

删除某个对象池

删除所有的Object对象池

ObjectPoolData

主要是对单个Object对象池的内部的操作,包括:

从对象池中取出对象

把对象放入对应的对象池

销毁某个对象(可以选择销毁的对象是否要用对象池回收)

GameObject类的所有的对象池

GameObject类的对象池的结构跟Object的结构一样,只不过是更换了对象的类型。可以参考Object类的所有的对象池的结构类型。

总结

对象池系统不再局限于对实体对象(GameObject)的管理,还可以对普通对象(Object)进行管理,大大的方便了资源的复用。

下一篇文章就记录下对象池系统到底要如何使用。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs