提高ios游戏的帧率

时间:2014-04-17 03:41:40

标签: ios iphone objective-c concurrency frame-rate

我有一个简单的iOS游戏接近完成。它在新设备上运行得相当顺畅,但是在带有iOS 7的iPhone 4S上运行它是没有希望的。

时间分析,似乎在设置center的{​​{1}}属性时会使用大量的计算能力,这些属性可以随时在屏幕上的多个对象上设置。使用UIViews同时运行这些函数会导致非常奇怪的行为,即游戏中的不同对象不会按照它们应该的时间或速度移动。

我发现我没办法加快速度。

这是一款简单的2D游戏,它不应该在iOS设备上造成这种损失。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您需要告诉我们更多关于您是如何做到这一点的。你是否正在使用定时循环进行动画,为每个帧设置视图的中心属性?如果是这样,那就无法在iOS中高效地使用图形硬件。 4s是一个相当新的设备。它仍在广泛使用(我的手机是4s),你应该能够支持它。

我从4s和iPad 2中得到30-60 FPS,使用OpenGL对图像进行网格转换,所以它是可能的。

在开发过程中,对性能最差的目标设备进行性能测试的时间是“早期且经常”,而不是在接近完成时。

不幸的是,答案可能是你动画制作方式的重大变化。同样,您需要提供更多详细信息。

答案 1 :(得分:0)

您是否在update:方法上使用增量时间?它应该基于硬件提高性能。如果你还没有使用它,那么你就是这样做的,考虑到你在一个单独的类上有一个玩家属性,例如:

@property (nonatomic, assign) NSTimeInterval previousUpdateTime;

- (void)update:(NSTimeInterval)currentTime
{

  NSTimeInterval delta = currentTime - self.previousUpdateTime;

  if (delta > 0.02) {
    delta = 0.02;
  }

  self.previousUpdateTime = currentTime;
 [self.player update:delta];

  ...
}