【发布时间】:2018-04-30 12:10:56
【问题描述】:
我正在使用 Swift 4 和 SpriteKit 制作纸牌游戏。我创建了一个自定义的 SKScene 子类,在这个类中是一个 SKNode,我将其用作一个层(gameLayer),我将所有节点都附加到该层上,这将被停止。
我还做了一个按钮,它调用一个函数(pauseGame)来切换gameLayer的isPaused,效果很好。
问题是:我希望当游戏移动到场景时,它开始已经停止,用户应该通过按下按钮开始游戏。但是当我在 didMove 函数中调用 pauseGame 函数时,它不起作用,gameLayer 仍然处于活动状态。
我做了一些观察,将“print (gameLayer.isPaused)”和帧数放在更新函数中。它表明,实际上场景开始时在 didMove 中将 gameLayer.isPaused 设置为 true,但在第二帧之后它被设置为 false。我真的不知道它会发生在哪里,因为我不会在代码中的其他任何地方使用 gameLayer.isPaused。
当然,一个解决方案是在第二帧之后调用 pauseGame,但我认为这不是一个干净的方法。
class BMScene: SKScene {
let gameLayer = SKNode()
func pauseGame(){
if gameLayer.isPaused {
gameLayer.isPaused = false
} else {
gameLayer.isPaused = true
}
}
override func didMove(to view: SKView) {
self.pauseGame()
}
【问题讨论】:
标签: sprite-kit sknode