【巨人的肩膀上制造世界】——4——Unity3D框架学习_对象池和对象池管理_基于PoolManager插件
2023-09-11 14:19:58 时间
Unity3D框架学习_对象池和对象池管理_基于PoolManager插件
目录
1、博文介绍
本篇博客同样是介绍对象池的管理,同时向大家推荐一款插件就是PoolManager,一款关于对象池的插件,本篇博文中博主使用的是7.0的版本,插件的介绍来自雨松大大关于该插件的介绍,推送中会推送雨松大大的相关文章,本篇博文作为插件介绍的一篇也同时作为框架学习的一篇。
2、内容
(1)插件属性介绍
PoolName | 缓存池的唯一名称 |
MatchPoolScale | 勾选后实例化的游戏对象的缩放比例将全是1,不勾选择用Prefab默认的 |
MachPool Layer | 勾选后实例化的游戏对象的Layer将用Prefab默认的 |
Don’t Reparent | 勾选后实例化的对象将没有父节点,通通在最上层,建议不要勾选 |
Don’t Destroy On Load | 场景切换不销毁 |
LogMessage | 是否输出相关信息 |
Pre-Prefab Pool Options | 缓存池列表,意思就是缓存列表里面可以放各种类型的Prefab。右边有个 “+”按钮点击就添加每个类型的Prefab了 |
prefab | 可以直接把工程里的Prefab直接拖进来 |
preloadAmount | 缓存池这个Prefab的最大保存数量 |
preloadTime | 如果都选表示缓存池所有的gameobject可以“异步”加载 |
preloadFrames | 每几帧加载一个 |
preloadDelay | 延迟多久开始加载 |
limitInstance | 是否开始实例的限制功能 |
limit Amount | 限制缓存池里最大的Prefab的数量,它和上面的preloadAmount是有冲突的,如果同时开启则以limitAmout为准 |
limitFIFO | 如果我们限制了缓存池里面只能有10个Prefab,如果不勾选它,那么你拿第11个的时候就会返回null。如果勾选它在取第11个的时候他会返回给你前10个里最不常用的那个 |
cullDespawend | 是否开启缓存池智能自动清理模式 |
cull Above | 缓存池自动清理,但是始终保留几个对象不清理 |
cull Delay | 每过多久执行一遍自动清理,单位是秒 |
cullMaxPerPass | 每次自动清理几个游戏对象 |
logMessage | 输出相关信息 |
注:属性相关介绍摘自雨松MoMo
(2)PoolMgr
根据插件的属性和相关用法,进行了封装,不外乎也就是 拿/放 的操作
默认属性的设置都在PoolMgr内,可以手动设置(1)内的所有配置属性
(3)使用方法
//实例化
PoolMgr poolMgr = new PoolMgr();
//直接获取实例
poolMgr.Spawn(prefab);
//获取实例并设置父物体
poolMgr.Spawn(prefab,parent);
//获取实例并设置位置旋转
poolMgr.Spawn(prefab,pos,rot);
//获取实例并设置位置旋转,父级
poolMgr.Spawn(prefab,pos,rot,parent);
//释放物体
poolMgr.Despawn(prefab);
//释放物体到parent下
poolMgr.Despawn(prefab,parent);
//释放池子内所有活跃物体
poolMgr.DespawnAll();
在github内的工程里写了例子,工程代码全部在github内,下载请移步博主github
3、推送
雨松MOMO 2014年07月18日 于 雨松MOMO程序研究院 发表
https://www.xuanyusong.com/archives/2974
工程github:https://github.com/KingSun5/UnityPool_PoolManager
4、结语
生命不息,学习不止,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
QQ交流群:806091680(Chinar)
该群为CSDN博主Chinar所创,推荐一下!我也在群里!
本文属于原创文章,转载请著名作者出处并置顶!!!!!
相关文章
- 学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
- 【学习笔记34】JavaScript的时间对象
- matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象
- 数组元素是对象的去重方法
- 精读JavaScript模式(四),数组,对象与函数的几种创建方式
- Ehcarts 与 百度地图结合时,如何获取bmap的实例对象?
- 学习Python的第十节课(类和对象)
- Python 类和对象
- PDO 学习与使用 ( 一 ) :PDO 对象、exec 方法、query 方法与防 SQL 注入
- 《ActionScript 3.0基础教程》——第1章 对象的访问和操作1.1 创建新的ActionScript 3.0项目
- Java经典实例:进阶版堆栈实现,支持任何对象类型
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- JNI学习积累之三 ---- 操作JNI函数以及复杂对象传递
- WSL2-参考的对象类型不支持尝试的操作。
- Js判断对象是否为空,Js判断字符串是否为空
- ABP理论学习之数据传输对象(DTO)
- Qt元对象(Meta-Object)系统与反射
- get_class 返回对象的类名
- js 对象转&拼接
- scala编程第18章学习笔记——有状态的对象
- javascript学习-创建json对象数据,遍历
- Django学习路18_F对象和Q对象
- Jackson学习二之集合类对象与JSON互相转化--转载
- 【数据库学习笔记】——cursor游标对象
- 美科技股周五集体暴跌 高市盈率股成清仓对象
- JavaScript之arguements对象学习