当前位置: 首页 > news >正文

unity 高性能对象池解决方案

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

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

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

支持多种对象:

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

同步、异步加载:

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

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

隐藏方式:

对于UI:

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

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

自动收缩:

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

异步删除:

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Uniapp 跨域
  • 冒泡排序,选择排序,插入排序,归并排序,快速排序五种排序方法
  • JavaScript Window localStorage使用
  • 基于springboot的智慧社区微信小程序
  • Linux中使用cp命令的 -f 选项,但还是提醒覆盖的问题
  • 【Web】御网杯信息安全大赛2024 wp(全)
  • Python语法(二)——函数
  • vue3 组合式API defineEmits() 与 emits 组件选项
  • STM32 单片机最小系统全解析
  • Linux自主学习篇
  • Qt Creator项目模板介绍
  • 视频相关处理
  • MQ入门(4)
  • 【Python】Maya:为人类打造的 Python 日期时间库
  • 抓机遇,促发展——2025第十二届广州国际汽车零部件加工技术及汽车模具展览会
  • 分享一款快速APP功能测试工具
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • canvas 高仿 Apple Watch 表盘
  • React-redux的原理以及使用
  • SpiderData 2019年2月23日 DApp数据排行榜
  • windows下mongoDB的环境配置
  • yii2中session跨域名的问题
  • 关于使用markdown的方法(引自CSDN教程)
  • 前端相关框架总和
  • 如何在GitHub上创建个人博客
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 再谈express与koa的对比
  • 正则学习笔记
  • 中文输入法与React文本输入框的问题与解决方案
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 06-01 点餐小程序前台界面搭建
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​Redis 实现计数器和限速器的
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • (~_~)
  • (20)docke容器
  • (附源码)ssm码农论坛 毕业设计 231126
  • (汇总)os模块以及shutil模块对文件的操作
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (数据结构)顺序表的定义
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)大型网站架构演变和知识体系
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .htaccess配置重写url引擎
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 调用海康SDK以及常见的坑解释
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @SuppressWarnings(unchecked)代码的作用
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [023-2].第2节:SpringBoot中接收参数相关注解