性能优化 - 对象缓存

时间:2013-06-17 18:41:55

标签: objective-c caching cocos2d-iphone

所以我有一个我正在使用cocos2d的游戏。游戏涉及许多敌人的射弹,以及一些友方的射弹与敌人的射弹相撞。

敌人和友方射弹都是具有以下属性的物体:

  • 精灵(用于CCMoveTo,动作)
  • hitbox(CGRect)
  • 旅行时间
  • 轨迹

它还有计算旅行时间,轨迹和其他根据随机产卵位置确定的事物的方法。

目前我正在做的是每次产生一个射弹时创建这些物体,将它们添加到阵列(即friendlyProjectiles,enemyProjectiles),迭代这些物体进行碰撞检测,并在碰撞时释放物体。

在这里使用对象缓存会更好吗?

例如:

  • 在启动时创造100个敌人射弹物体,5个友方射弹物体
  • 将这些对象放在堆栈上
  • 当产生射弹时,我不会创建对象,而是从堆栈中弹出
  • 当射弹碰撞并被摧毁时,我只是将其从图层和阵列中移除而不是释放物体,然后将其推回堆叠
  • 当射弹产生时,我仍然需要计算它的轨迹,速度,距离等,但我不必重新创建物体

这是一个好方法吗?

我对Objective C比较新,我会遇到问题,我试图同时推送并弹出堆栈吗?

1 个答案:

答案 0 :(得分:2)

您应该问的主要问题是:

您现在的表现方式是否存在性能问题?

如果没有,那么为什么会让事情复杂化。

如果出现问题,请对应用进行分析,看看问题是否存在。
如果是这样那么是的,这听起来像是合理的方法。