故意减慢 FPS Spritekit

Posted

技术标签:

【中文标题】故意减慢 FPS Spritekit【英文标题】:Purposely slowing down FPS Spritekit 【发布时间】:2017-01-20 10:19:15 【问题描述】:

是否可以故意减慢 SpriteKit 场景的 FPS?我在想这是否可以让我的游戏调试更容易。

【问题讨论】:

【参考方案1】:

您也可以通过减慢节点或物理速度来做这样的事情(作为 crashoverride777 答案的补充):

要让节点进入慢动作(您可以对每个节点执行此操作):

self.speed = 0.2 //where self is a scene

或者对物理学做同样的事情:

self.physicsWorld.speed = 0.2 //where self is a scene

【讨论】:

这不是可靠的解决方案。尤其是当你在游戏中有粒子并且你有很多精灵时(循环通过精灵可能会遇到性能问题)。不过谢谢你的回答。 为什么你会在任何情况下循环通过精灵来减慢它们的速度?您更改其父级的速度或更改场景的速度。 @GeneCode 此外,此方法使您可以分别减慢物理世界、完整节点树或单个节点的速度... @GeneCode 我的意思是 SKEmittetNode 上有一个名为particleSpeed 的属性,但这也会改变粒子的行为。 @GeneCode 我根据你的问题提出了一个问题,所以你可能想跟踪它***.com/q/41805786/3402095【参考方案2】:

当您从GameViewController 加载第一个场景时,您可以更改SKViewFPS 值。

类似:

if #available(ios 10.0, *)  
     skView.preferredFramesPerSecond = 30 // 30 FPS 
 else 
     skView.frameInterval = 2 // Deprecated (1 default = 60FPS so 2 would = 30 FPS)
     skView.preferredFrameRate = ... // Deprecated

正如旋风在他的回答中如此亲切地指出的那样:

“此外,这不会减慢任何速度,您只是跳过您看到的帧,例如。如果您有一个节点在 5 秒内从 A 点移动到 B 点,并且您将 preferredFrameRate 更改为 30fps,该节点将移动从 A 到 B 仍然需要 5 秒,而不是 10 秒。您会看到的唯一变化是跳过了一些帧。”

SKView API 参考here

【讨论】:

好答案。正如当前SKView 类所解释的那样,frameInterval 也已弃用:/* Deprecated, please use preferredFramesPerSecond. Number of frames to skip between renders, defaults to 1 (render every frame) Actual requested rate will be preferredFramesPerSecond / frameInterval. */ @available(iOS, introduced: 7.0, deprecated: 10.0) open var frameInterval: Int @GeneCode 从 Alessandro 的评论中可以看出,该属性仅适用于 iOS 10 及更高版本,因此您将不得不使用类似这样的东西:if #available(iOS 10.0, *) ... 如果您的部署目标是 您好,感谢您的评论。我会更新我的答案

以上是关于故意减慢 FPS Spritekit的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL:球体减慢帧速率

MoviePy:减慢视频的渲染速度

阴影减慢 UIScrollView

模型减慢游戏速度 - opengl [关闭]

recv() 函数太慢

Chrome 画布渲染速度错误?