(占坑)Unity-对象池
对象池是一种朴素的优化思想。在遇到需要大量创建和销毁同类物体的情景时,可以考虑使用对象池技术优化游戏性能。
1.为什么要使用对象池
在很多类型的游戏中都会创建和销毁大量同样类型的物体。例如,飞行射击游戏中有大量子弹,某些动作游戏中有大量敌人,还有游戏中反复出现和消失的粒子特效等。
而创建和销毁物体本身属于比较消耗资源的操作,创建时不仅需要引擎的处理,而且还会分配大量内存,这些内存在物体销毁时还需要回收,这给虚拟机带来了垃圾回收的压力。
也就是说,场景中的物体数量较多不一定是对性能影响最大的因素。影响最大的因素有可能是一段时间内有太多物体创建和销毁。例如,在飞行射击类游戏中,每秒有许多子弹创建,稍后又有同样多的子弹因击中敌人或距离过远而销毁。而无论多么简单的物体,在其创建和销毁的过程中都会消耗一定的资源。对象池优化所针对的正是这一类问题。
2.简易对象池实例
先思考最简单的情况:一个对象池只管理同一种物体(如同一种子弹或同一种粒子)。对象池作为一个脚本组件,挂在场景中的一个空物体上以便编辑。而“池子”中的多个物体可以作为它的子物体,方便管理。
对象池中的大量物体,如果用一个容器管理,则用C#的队列(Queue)最合适。
3.对象池测试方法
4.性能分析器
5.支持多种物体的对象池
posted on 2023-04-14 17:31 Shazam_sjtu 阅读(75) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库