cocos2d-x 对象池机制:可回收与重复使用

另一个能有效提高内存和计算效率的是对象池的使用。其本质与缓存类似,即希望能减少那些频繁使用的对象的重复创建和销毁,例如飞行射击类游戏中的子弹。使用对象池机制能带来两方面的收益,首先是减少对象初始化阶段的重复计算,其次是避免反复地向操作系统申请归还内存。一个很好的例子就是捕鱼游戏中的鱼,鱼和鱼之间的属性是类似的,不一样的仅仅是当前的坐标位置及正在播放的动作帧。那么,当鱼游到屏幕后,可以不对其进行销毁,而是暂存起来。某一时刻需要重新创建鱼时,我们可以将其从对象池中取出,重新申请内存并初始化,这样就大大减轻了cup的负担。

对象池和缓存很像,但比内存更抽象,也更简单一些,因为我们不需要考虑从哪里加载的问题:都已经被抽象为初始化函数了。而且更简单化的是,加入对象池的每一个对象都是无差别的,我们不需要对每个对象进行特定的标记,直接取出任意一个未使用的对象即可。

看完上面的描述,读者应该有了初步的认识:缓存是一个字典,而对象池则是一个数组。得益于引用计数的内存管理机制,只需要在数组上做适当封装就可以提供一个对象池的功能了。尽管如此,一个高效实现的对象池还需考虑如何有效地处理对象的生成和归还,以及占用内存的动态增长等问题。因此,我们不妨借助前人成果,在已有对象池的基础上搭建适合我们游戏使用的对象池。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值