【发布时间】:2015-06-25 14:16:28
【问题描述】:
我正在尝试将帧速率降低到最高 30 FPS。官方文档说要使用:
skView.frameInterval = 2;
我通读了所有可用的文档以及在 stackoverflow 或其他页面/博客/等中提出的所有类似问题。我尝试了很多方式,但无论我在哪里尝试设置属性,它都不会影响 FPS。
我没有使用除 SpriteKit 之外的任何其他计时机制。我正在根据文档和 Stackoverflow 上的答案进行相应设置。
我什至启动了 Xcode 提供的基本 SpriteKit 模板并尝试设置帧速率属性,但即使这样也没有成功。
有没有人遇到任何相似之处?有没有其他方法可以降低最大 fps?我还能尝试什么来降低 FPS?
顺便说一句:我正在使用 OS X 并且拥有第一代 Retina Macbook Pro - 也许是硬件问题?
编辑:
我没有覆盖 -(void)update: 方法 - 只有 -(void)didSimulatePhysics
这是我在 Interface Builder 中设置的 NSViewController 子类中所做的。 self.spriteKitView 是我的NSViewController-子类的NSView 的出口
-(void)setupSpriteKitView {
self.spriteKitView.frameInterval = 2;
self.spriteKitView.ignoresSiblingOrder = YES;
self.spriteKitView.showsFPS = YES;
self.spriteKitView.showsDrawCount = YES;
self.spriteKitView.showsNodeCount = YES;
}
-(void)viewDidLoad {
[super viewDidLoad];
[self setupSpriteKitView];
[self loadStartupScene];
}
我什至尝试将其放入我的 SKScene 子类中,将其作为 Interface Builder 中的用户属性附加到 SKView。
我现在怎么不工作了?在我的游戏和 Xcode 模板中,调试输出都显示为 60 FPS。即使减少skView.frameInterval = 4,动画也会保持流畅。
【问题讨论】:
-
你怎么知道它不起作用?为您的 SKView 发布代码 sn-p。
-
@sangony 调试输出一直显示 60 fps。用 sn-ps 更新了我的问题。
-
如果该代码在
SKView子类中,那么self.spriteKitView是什么? -
Sprite Kit FPS 在 OS X 上是一团糟。全屏时 FPS 经常掉线,某些设备如 Mac book air 存在严重错误。有时 FPS 会根据窗口大小设置上限。我提交的所有关于 FPS 的票都说它们是在 Xcode 7/el capitan 中修复的。我还没有机会测试 Xcode 7,但如果可以的话,您应该尝试看看您的错误是否已修复。
-
@SimonKemper 你可以在这里看到我关于全屏错误的一些解决方法的帖子:stackoverflow.com/q/27758027/2158465 哈哈,Mac book air 出于某种原因会在超过一定数量的绘图调用时限制 FPS。 Mac book air 有时也不适用于我在链接中发布的全屏解决方法。我会说坚持使用 Sprite Kit。只要您不进行全屏操作,它就可以正常工作(您始终可以使用最大窗口)。至于您的 frameInterval 问题,我可能会问您为什么要将其限制为 30。Imo 30 FPS 看起来真的很糟糕。如果你得到 60 坚持下去!
标签: macos sprite-kit frame-rate skscene skview