故意减慢 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
加载第一个场景时,您可以更改SKView
的FPS 值。
类似:
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的主要内容,如果未能解决你的问题,请参考以下文章