为什么在iOS11 +上重新打开应用程序会取消暂停SpriteKit节点?

时间:2018-10-22 09:29:28

标签: swift sprite-kit

我在一个场景中有一个SKSpriteNode,该场景具有SpriteKit场景编辑器内置的动画。没有动画是通过代码完成的。 skspritenode从.sks文件导入到场景中。

我已经在运行iOS 10.3.2的iPad Pro上进行了测试,并且工作正常,而在运行iOS 12的iPhone XS Max上,动画仅在我关闭应用程序后才播放(甚至退出多任务处理),并且返回。动画在应用程序首次启动时不会开始播放。

我已经读到:“从iOS11开始,Apple已将场景和SKSpriteNodes的默认状态设置为暂停。”所以要解决,我告诉导入的节点:

nodeName.isPaused =否。这样就解决了问题。

为什么退出应用程序并重新打开它会导致某些内容需要取消暂停?

1 个答案:

答案 0 :(得分:1)

对于IsPaused,场景将在离开应用程序时将此属性设置为true,而从应用程序返回时将其设置为false。这将导致所有节点也将IsPaused变量设置为false和true。

我建议覆盖IsPaused属性,并将getter和setter链接到您自己的类中的私有变量。

您也可以使用||。使用内置的isPaused,以防您需要处理它。

class GameScene : SKScene
{
    private var _realPaused  = false
    public override var isPaused : Boolean
    {
        get
        {
            return super.isPaused || _realPaused
        }
        set
        {
            super.isPaused = newValue // this will mess with your children nodes if they are not the same value as parent,  preserve all children prior to setting this if needed
        }
    }
}