提高ios游戏的帧率

提高ios游戏的帧率,ios,iphone,objective-c,concurrency,frame-rate,Ios,Iphone,Objective C,Concurrency,Frame Rate,我有一个简单的iOS游戏即将完成。它在新设备上运行非常平稳,但是在iPhone4S和iOS7上运行是没有希望的 在对其进行分析时,似乎在设置UIViews的center属性时使用了大量的计算能力,该属性在屏幕上的多个对象上的每一帧都可以随时设置。使用dispatch\u async同时运行这些函数会导致非常奇怪的行为,即游戏中的不同对象不会以预期的时间或速度移动 我没有办法把事情加快一点 这是一个简单的2D游戏,它不应该在iOS设备上造成这样的损失 有什么建议吗?你需要告诉我们更多关于你是如何做

我有一个简单的iOS游戏即将完成。它在新设备上运行非常平稳,但是在iPhone4S和iOS7上运行是没有希望的

在对其进行分析时,似乎在设置
UIViews
center
属性时使用了大量的计算能力,该属性在屏幕上的多个对象上的每一帧都可以随时设置。使用
dispatch\u async
同时运行这些函数会导致非常奇怪的行为,即游戏中的不同对象不会以预期的时间或速度移动

我没有办法把事情加快一点

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


有什么建议吗?

你需要告诉我们更多关于你是如何做到这一点的。是否使用计时循环制作动画,为每个帧的视图设置“中心”属性?如果是这样的话,那就不能非常有效地利用iOS中的图形硬件。4s是一款相当新的设备。它仍然在广泛使用(我的手机是4s),你应该能够支持它

我使用OpenGL对图像进行网格变换,4s和iPad2的速度都是30-60 FPS,所以这是可能的

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


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

您是否在
更新:
方法中使用增量时间?它应该基于硬件提高性能。如果您还没有使用它,考虑到您在一个单独的类上有一个player属性,下面是如何使用它的,例如:

@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];

  ...
}

在我编辑的问题中,我声明,
center
属性设置为每帧多个
UIView
s。如果这不是图形硬件的有效使用,我可以使用哪些其他方法来实现相同的结果?这确实是我的
update:
方法的工作方式,这似乎不是错误的来源。确定。也许邓肯的回答会帮助你更好地解决你的问题。