unity 高性能对象池解决方案

对于一个高性能对象池应该有的功能:

支持多种对象、同步加载、异步加载、隐藏方式、自动收缩(使用LRU缓存机制,最近最久未使用来进行收缩)、异步删除

所以我针对这几个功能讲一下原理:

支持多种对象:

GameObject池子和Object池子。也就是申请出来的挂不挂monobehavior。这两个添加删除的方式不同,所以要区分。

同步、异步加载:

同步加载是因为对于小的对象,我拿出来就用,很方便。对于较大的对象,使用异步加载。

但是其实我们常用的就是同步加载,对于短时间大量对象加载,我们会采取分帧操作:设置一个加载队列,每帧从队列取出几个进行加载。

隐藏方式:

对于UI:

unity关于UI隐藏时性能问题-CSDN博客

对于普通游戏对象,这个还没研究过,一般都是disable或者放到9999位置(后续有使用到会更新)

自动收缩:

收缩策略:设置最大容量:防止内存爆炸、设置回收刷新时间:每隔多少秒扫描一次最近最久未使用的池子(LRU),看其是否超过设定的容量,超过则收缩设定的数量个(具体策略根据项目需求而定)。

异步删除:

对于大量对象,我们在同一帧删除多个会导致卡顿(尤其是gameObject),所以我们只需要建一个删除队列,每帧删除一个对象即可。

相关推荐
魔士于安1 小时前
Unity材质球大合集
unity·游戏引擎·材质
mxwin2 小时前
Unity Shader 冰面 Shader 制作原理与流程
unity·游戏引擎·shader
小拉达不是臭老鼠4 小时前
Unity中的UI系统之UGUI_登陆面板实现
ui·unity
郝学胜-神的一滴4 小时前
[简化版 GAMES 101] 计算机图形学 11:频域·卷积·抗锯齿
c++·unity·图形渲染·opengl·three·unreal
元气少女小圆丶21 小时前
SenseGlove Nova 2+Unity开发笔记2
笔记·unity·游戏引擎
想不明白的过度思考者1 天前
Unity学习笔记——虚拟摇杆实现笔记(事件触发器的使用、UGUI 坐标转换)
笔记·学习·unity
魔士于安1 天前
unity volumefog带各种demo第一人称 wsad 穿墙控制
游戏·unity·游戏引擎·贴图·模型
魔士于安1 天前
红色文化馆技术文档
前端·unity·游戏引擎·贴图·模型
LONGZETECH1 天前
Unity 3D工业级教育软件实战:200+无人机装调任务的碰撞检测与交互落地
3d·unity·架构·游戏引擎·无人机·交互·cocos2d
淡海水1 天前
08-认知篇-对比-injectfix深度解析
unity·c#·热更新·clr·hybrid·injectfix