【问题标题】:Difference between paused property of SKScene and SKViewSKScene 和 SKView 的 paused 属性的区别
【发布时间】:2014-06-16 08:39:17
【问题描述】:

我正在使用以下代码暂停我的 SKScene:

self.paused = YES;

但是,根据Andrey Gordeevanswer,也可以使用此行暂停场景:

self.view.paused = YES;

我想了解调用其中一个(或两个)来暂停场景会有什么不同。

【问题讨论】:

    标签: ios objective-c sprite-kit skscene skview


    【解决方案1】:

    效果是一样的。您仍然在场景中拥有 paused 属性,因为它是 SKNode 的子类,并且可能需要在转换期间暂停场景,通过控制在转换期间是否暂停场景的 SKView 设置或手动暂停。

    我敢打赌,暂停视图也可以“冻结”当前正在运行的过渡,这是唯一不能通过单独暂停场景来暂停的事情。

    因此暂停视图也可能暂停所有内部计时器和绘图调用,因此暂停视图可能更好地节省电池,尽管这是基于 cocos2d 如何处理暂停的导演与暂停场景的猜测。

    【讨论】:

    • update:方法计算效果不一样
    【解决方案2】:

    暂停SKView 停止为SKScene 调用update: 方法。

    暂停SKScene 不会这样做。

    我通常会同时暂停SKSceneSKView

    编辑:

    iOS9 起暂停场景将暂停update: 方法。

    【讨论】:

    • 我通过在更新方法中使用 NSLog() 确认了这一点。感谢 Andrey 解决这个问题。
    • 暂停 SKScene 会停止在节点及其子节点上运行的所有操作。因此两者通常被一起调用。
    • 现在不是这种情况了...在iOS9中,update:方法在场景暂停时不会执行。您可以为未来的读者对此进行编辑。另一部分(关于 SKView)当然是正确的,我想这永远不会改变:)
    • @Whirlwind 继续编辑答案!不幸的是,我现在不使用SpriteKit :)
    • 我正在开发一款带有引力模拟的游戏,实际上差异很明显。如果您快速暂停/取消暂停 SKView,您会感到不舒服的抖动,例如错误。暂停/取消暂停场景本身更加流畅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2014-09-09
    • 2018-04-14
    • 2015-04-05
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多