Ios SKAction.run在程序执行暂停/恢复之前不工作

Ios SKAction.run在程序执行暂停/恢复之前不工作,ios,sprite-kit,skaction,completionhandler,Ios,Sprite Kit,Skaction,Completionhandler,第一次使用SpriteKit-点击开始按钮调用游戏场景中的startLevel方法,该方法让玩家精灵在SKAction.sequence中触发两个SKAction.run语句。startLevel方法有一个完成块,用于向控制台触发消息并更新游戏状态 点击开始显示消息,但SKAction.run语句不起作用,除非我先暂停程序执行,然后在点击开始按钮之前单击恢复。如果我停止该级别并点击重试按钮,将调用相同的startLevel方法,并且它可以在不暂停执行的情况下正常工作 方法如下(播放器、标记器和门

第一次使用SpriteKit-点击开始按钮调用游戏场景中的startLevel方法,该方法让玩家精灵在SKAction.sequence中触发两个SKAction.run语句。startLevel方法有一个完成块,用于向控制台触发消息并更新游戏状态

点击开始显示消息,但SKAction.run语句不起作用,除非我先暂停程序执行,然后在点击开始按钮之前单击恢复。如果我停止该级别并点击重试按钮,将调用相同的startLevel方法,并且它可以在不暂停执行的情况下正常工作

方法如下(播放器、标记器和门都是存储精灵的可选对象;点击“开始”时,我确认没有精灵为零,没有精灵暂停,游戏场景和SKView没有暂停):

下面是调用startLevel的游戏场景代码:

startLevel(finished: { () -> () in
    print("ALERT: startLevel finished")
    levelStarted = true
})
我尝试添加一个带有控制台消息的run方法完成块,但消息从未打印出来。看起来player.sprite.run方法被忽略了(除非我先暂停执行),我不明白为什么。谢谢你的帮助


顺便说一句,上面的所有代码都在GameSecene的更新方法之外,上面的marker和door方法都在didbeagin()和didEnd()中使用,它们在那里工作得很好。

在iOS 11中,苹果制造的Spritekit场景和对象默认情况下暂停

我要做的是对抗这一切

在我的场景中

override func didMove(to view: SKView) {

    //this ensures that the scene is not paused
    self.isPaused = false
}
在我的每个自定义对象设置或初始化中

self.isPaused = false

我也这么做了——注意上面我写的没有一个对象被暂停;可以肯定的是,我在行动前打印了每件物品的照片;顺便说一句,除了打印isPaused外,我还尝试在SKAction调用之前将游戏场景、SKView和每个对象的isPaused明确设置为false,直到我第一次暂停执行,它们才起作用。我知道你不会同意我的观点,但我敢打赌,有一件事是你没有解释的。我曾经有过同样的问题,我和一位同事花了3天时间才解决。如果我在代码中设置了一个断点,暂停游戏并恢复游戏,那么我的所有动作都会正常工作。startlevel calledAlso在哪里,请打印场景。I暂停在更新函数中
self.isPaused = false