[CCDirector sharedDirector] .secondsPerFrame返回零值

时间:2014-03-10 16:44:45

标签: objective-c cocos2d-iphone xcode5

我正在寻找一种获取FPS速率的方法,我在CCDirector中找到了属性secondsPerFrame,但是每个CCLog都说[CCDirector sharedDirector].secondsPerFrame是“0.000000”

如果我可以定制代码以立即调整帧速率下降,游戏基本上不会低于60fps,这将是惊人的。

1 个答案:

答案 0 :(得分:1)

  

如果我可以定制代码以立即调整帧速率下降,   游戏基本上永远不会低于60fps,这将是   惊人的。

如果有可能,我们会发现这是渲染引擎的标准功能。唉,事实并非如此。

要检测丢弃的帧意味着必须已经删除了一个帧。切换代码路径的开销,特别是回到“高细节”版本的开销通常也太高。

除了设计游戏的头痛,其视觉甚至算法可能随时变化。

另外,玩家的感知会相当消极 - 考虑流媒体视频会自动调整到带宽,有时会在几秒钟内显得非常模糊。

如果您无法始终匹配60 fps,将游戏限制在30 fps通常会更好,并且设置为稳定的30 fps而不是40到60 fps的波动。

无论如何,如果您记录secondsPerFrame并获得0.0000,则可能使用错误的格式说明符进行了记录。试试这个:

NSLog(@"spf: %f", [CCDirector sharedDirector].secondsPerFrame);

请记住,此值可能是多个帧的平均值,并且可能无法在发布版本中更新。检查代码是否为#if /#ifdef。