我一直试图解决这个问题,人们说60fps,但据我所知,没有确凿的证据证明这一点?
答案 0 :(得分:3)
您可以创建一个显示链接(CADisplayLink
),在屏幕更新时将调用该链接。
创建一些属性以跟踪显示链接和变量以计算帧速率:
@property (nonatomic, strong) CADisplayLink *displayLink;
@property (nonatomic) CFTimeInterval startTime;
@property (nonatomic) NSInteger frameCount;
然后您可以使用方法来启动,停止和处理显示链接:
- (void)startDisplayLink
{
self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)];
self.startTime = CACurrentMediaTime();
[self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}
- (void)stopDisplayLink
{
[self.displayLink invalidate];
self.displayLink = nil;
}
// This handler will update a label on the screen with the frame rate once per second
- (void)handleDisplayLink:(CADisplayLink *)displayLink
{
self.frameCount++;
CFTimeInterval now = CACurrentMediaTime();
CFTimeInterval elapsed = now - self.startTime;
if (elapsed >= 1.0) {
CGFloat frameRate = self.frameCount / elapsed;
// either, like below, update a label that you've added to the view or just log the rate to the console
self.frameRateLabel.text = [NSString stringWithFormat:@"%.1f", frameRate];
self.frameCount = 0;
self.startTime = now;
}
}
然后只需启动显示链接(调用startDisplayLink
),上述处理程序将报告计算出的费率。
我个人更喜欢这种仪器,因为我发现仪器本身对性能的影响比上面的代码更多(使用仪器,你的帧速率可能会低于实际值)。显然,上面的代码也会影响性能,但它是适度的。此外,通过以上功能,您可以测量从计算机上不受限制的设备的性能:您始终应该在物理设备而不是模拟器上测量性能。
在回答关于所实现的帧速率的问题时,上面将说明在简单的动画中,通常实现60fps的帧速率,但是动画越复杂/越多,所实现的速率将越低。
答案 1 :(得分:2)
使用Instruments查找自己,因为它取决于应用程序。
答案 2 :(得分:0)
在此处找到:http://answers.unity3d.com/questions/32841/is-it-possible-to-get-above-30-fps-on-an-ios-devic.html
是的 - 当您编译为xcode时,请查看AppController.mm-这是一个变量kFPS。
将此设置为,例如60。
我认为将它设置得很高是好的做法,所以你有空间降低上限。
此后,请注意60fps游戏早餐吃电池:)
答案 3 :(得分:-1)
如何在视图控制器中设置输出功能?:
spriteView.showsFPS = YES;
我们是否暗示输出值不可靠?