提高ios游戏的帧率
我有一个简单的iOS游戏即将完成。它在新设备上运行非常平稳,但是在iPhone4S和iOS7上运行是没有希望的 在对其进行分析时,似乎在设置提高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设备上造成这样的损失 有什么建议吗?你需要告诉我们更多关于你是如何做
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:
方法的工作方式,这似乎不是错误的来源。确定。也许邓肯的回答会帮助你更好地解决你的问题。