在 Spritekit 中取消暂停视图时,fps 显着下降

2023-12-03

当在 SpriteKit 中取消暂停视图时,我注意到 fps 显着下降(帧速率下降在 5-10fps 之间)。我用空项目(Spritekit 游戏模板)尝试了这个。这是代码:

if(!self.view.paused){
        self.view.paused = YES;
        NSLog(@"Paused");
    }else{
        NSLog(@"Unpaused");
        self.view.paused = NO;
    }

如果我暂停场景,一切都会按预期进行,帧率稳定在 60 fps。我正在设备上测试这个。

if(!self.paused){
        self.paused = YES;
        NSLog(@"Paused");
    }else{
        NSLog(@"Unpaused");
        self.paused = NO;
    }

这可能会在取消暂停时给游戏带来问题,因为某些帧会被跳过......有什么想法发生了什么吗?


我假设取消暂停后它会暂时下降?或者取消暂停后帧率总是很低。这只发生在 iOS 8 或 iOS 9 上。你能尝试一下 iOS 9 吗?我确信这种情况可能会发生,因为在取消暂停后,Sprite-Kit 需要稍微“预热”渲染周期。您可以尝试在仪器中进行分析并查看发生了什么。

至于解决方案,您可以尝试降低speed你的SKPhysicsWorld取消暂停后暂时停止,这样物理效果就不会跳跃,因为 Sprite Kit 有一个可变的时间步长,不幸的是无法更改。如果是跳跃的动作,你可以尝试降低speed你的SKScene。理想情况下,你应该两者都做。

此外,如果您只需要担心操作,您可以尝试仅暂停场景而不是 SKView(但请记住您的更新方法将会运行)。或者尝试暂时暂停场景,然后在取消暂停 SKView 后取消暂停。

除此之外,除了尝试为丢帧做好准备之外,您实际上没有什么其他办法可以解决此问题。如果您还没有向 Apple 报告,请务必向 Apple 报告。

以下是所有这些属性的类参考。

SKView-暂停

如果值为 YES,场景的内容将固定在屏幕上。没有动作 执行并且不执行物理模拟。

SKScene - 速度

默认值为 1.0,这意味着所有操作都按其各自的值运行 正常的速度。如果您设置不同的速度,时间似乎会跑得更快 或者对于在节点及其后代上执行的所有操作来说更慢。 例如,如果将速度值设置为 2.0,则操作将运行两倍 快速地。

SKScene - 暂停

如果值为 YES,则跳过该节点(及其所有后代) 当场景处理动作时。

SKPhysicsWorld - 速度

默认值为1.0,表示模拟正常运行 速度。默认值以外的值会更改此时的速率 通过物理模拟。例如,速度值为 2.0 表明物理模拟中的时间流逝速度是 场景的模拟时间。值为 0.0 会暂停物理 模拟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spritekit 中取消暂停视图时,fps 显着下降 的相关文章

随机推荐