unity - 对象池技术的实现与应用

本文探讨了Unity中对象池技术的实现和应用,旨在解决频繁创建和销毁对象导致的性能问题。通过理论和代码示例展示了如何创建、管理和使用对象池,包括PoolManager、PoolItem和PoolItemTime三个层级的设计。作者建议只对频繁复用的对象使用对象池,并提到了Unity的PoolManager插件作为现成的解决方案。
摘要由CSDN通过智能技术生成

本人之前发表在蛮牛网上的,现迁移至此。

本文为学习总结文章,如有错误请大神们指出~


理论参考:http://www.cnblogs.com/mezero/p/3955130.html

代码参考:http://www.omuying.com/article/78.aspx


背景:首先为什么会去了解对象池技术,原因是我的游戏在iOS上运行时出现了问题,有时会闪退,于是网上寻找解决方法,大神给出的答案是内存爆了。因为游戏中会频繁而且相对大量的创建( Instantiate  )和( Destroy  ),不仅导致游戏整个性能降低,而且如果创建的数量过多,内存很容易爆了。

目的:研究并实现对象池技术。

每次我都会先去看技术的理论知识,网上很多实现对象池技术的代码,但是理论就没有过多的介绍,因为对象池本身就很简洁形象。对象池技术就是:第一次创建的时候就将对象存储在一个池子中,当需要销毁的时候不直接销毁而是隐藏,当需要时在再次使用,就不需要再次实例化一个新的对象,直接把隐藏的对象显示并拿出来用。如果对象池中已经被隐藏的物体太久没有被重新使用,应该被真正的销毁。


池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象。


理论还是很容易理解的,估计有的人看了理论就可以自己去实现了~我没有那么大神,所以去网上找了很多代码资源自己看,去理解。接下来我把怎样实现一个对象池并应用于unity中的思路和代码写出来。


首先根据对象池概念,我们要怎样创建一个可以随时利用的对象池、怎样把实例化的物体放进对象池、怎样从对象池中取出对象、怎样实现超时的物体可以自动删除。


为了解决以上问题,首先我们要分好层级:对象池管理层(PoolManager),对象池组层(PoolItem),对象池组中成员层(PoolItemTime)。简单解释一下:

1:对象池管理层(PoolManager)这个很容易理解,即直接进行对象池操作的脚本。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值