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

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

【问题讨论】:

    标签: objective-c sprite-kit frame-rate


    【解决方案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 我根据你的问题提出了一个问题,所以你可能想跟踪它stackoverflow.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, *) {...} 如果您的部署目标是
    • 您好,感谢您的评论。我会更新我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2011-11-16
    • 2022-07-13
    相关资源
    最近更新 更多