Sprite kit 在Spritekit中取消暂停视图时,fps显著下降
在SpriteKit中取消暂停视图时,我注意到显著的fps下降(帧速率下降5-10fps)。我尝试了这个空项目(Spritekit游戏模板)。代码如下:Sprite kit 在Spritekit中取消暂停视图时,fps显著下降,sprite-kit,frame-rate,skscene,skview,Sprite Kit,Frame Rate,Skscene,Skview,在SpriteKit中取消暂停视图时,我注意到显著的fps下降(帧速率下降5-10fps)。我尝试了这个空项目(Spritekit游戏模板)。代码如下: if(!self.view.paused){ self.view.paused = YES; NSLog(@"Paused"); }else{ NSLog(@"Unpaused"); self.view.paused = NO; } 如果我暂停场景,一切正常,帧稳
if(!self.view.paused){
self.view.paused = YES;
NSLog(@"Paused");
}else{
NSLog(@"Unpaused");
self.view.paused = NO;
}
如果我暂停场景,一切正常,帧稳定在60帧/秒。我正在这个设备上测试
if(!self.paused){
self.paused = YES;
NSLog(@"Paused");
}else{
NSLog(@"Unpaused");
self.paused = NO;
}
这可能会在取消暂停时造成游戏性问题,因为某些帧将被跳过。。。你知道发生了什么事吗 我假设它在联合国暂停后暂时下降?或者在取消暂停后总是低fps。这只发生在iOS 8或iOS 9上。你能试试iOS9吗?我确信这可能会发生,因为在取消暂停后,Sprite Kit需要一点时间来“预热”渲染周期。您可以尝试在仪器中进行分析,看看发生了什么 至于解决方案,您可以尝试在取消暂停后暂时降低
SKPhysicsWorld的速度
,这样物理就不会跳转,因为精灵套件的时间步长是可变的,不幸的是,这无法更改。如果是跳跃动作,您可以尝试降低SKScene
的速度。理想情况下,你可能应该同时做这两件事
此外,如果您只需要担心动作,您可以尝试只暂停场景而不是SKView(但请记住,您的更新方法将运行)。或者尝试暂时暂停场景,然后在取消暂停SKView后取消暂停
除此之外,除了为丢弃的帧做准备之外,你真的没有什么其他方法可以解决这个问题。如果你还没有,一定要向苹果报告
下面是所有这些属性的类引用
SKView暂停
如果该值为“是”,则场景的内容将固定在屏幕上。没有行动
执行,不执行物理模拟
场景-速度
默认值为1.0,这意味着所有操作都以其默认值运行
正常速度。如果设置不同的速度,时间似乎会运行得更快
或对于在节点及其子体上执行的所有操作,速度较慢。
例如,如果将“速度”值设置为2.0,则操作的运行速度将加倍
快
场景-暂停
如果该值为“是”,则跳过该节点(及其所有子节点)
当场景处理动作时
SKPhysicsWorld-速度
默认值为1.0,这意味着模拟以正常速度运行
速度默认值以外的值会更改此时的速率
通过物理模拟。例如,速度值为2.0
表示物理模拟中的时间以两倍于
场景的模拟时间。值为0.0将暂停物理过程
模拟
我正在测试iOS 8。。。这是暂时的,fps在一秒钟或更短的时间内变得稳定。。。是的,当暂停场景并使用附加的BOOL属性来控制更新:执行时,我得到了很好的效果。我没有尝试过的是使用(physicsWorld的)速度属性。。。我会试试那个,然后告诉你结果……不,我看不出有什么不同。请注意,即使是空项目也会发生这种情况,而不仅仅是在游戏中(在游戏中使用动作)。我想我可以在雷达上找到这个,以防万一。我想这与Spritekit的“预热”和“引擎”有关(如您所述,当取消暂停视图时)。至少暂停场景的效果与预期的一样。谢谢你的回答。@Whirlwind啊,那太糟糕了。稍后我将尝试进行测试,看看是否可以提出不同的解决方案。我也可以尝试在iOS 9上运行,如果他们修复了,我会告诉你。如果你这样做的话,那就太好了。谢谢