iOS SpriteKit - 游戏开始前的倒计时?

Ste*_*ves 2 ios sprite-kit swift

刚刚使用Swift进入iOS上的SpriteKit.我在教程中有一个'Breakout'游戏,我希望在每个球发射之前实现倒计时,在屏幕中间放置一个SKLabel,从5到1倒数,然后自行移动并开始游戏.倒计时正在进行中,你可以看到完整的游戏画面,包括墙壁,固定球等.

我无法解决游戏循环中的位置.如果我在didMoveToView(我创建墙并初始化球和桨)的倒计时,我从来没有看到它,但我在日志中看到我的调试消息.我想在呈现SKScene之前调用了didMoveToView.

我试图在第一次调用"更新"时使用一个标志来调用倒计时功能,但我再次看到在屏幕上出现任何内容之前执行了倒计时 - 我认为在渲染场景之前最初会调用"更新".

我可以在另一个SKScene中实现"点按屏幕开始"屏幕,但我真的想在屏幕上倒计时,墙壁和(静止)球准备好了.我可以使用游戏画面的背景图像创建这个倒计时场景,但这看起来很尴尬.

感激地收到任何建议,

史蒂夫

Ste*_*ves 6

添加了这些功能并countdown(5)在最后添加了一个调用didMoveToView

func countdown(count: Int) {
    countdownLabel.horizontalAlignmentMode = .Center
    countdownLabel.verticalAlignmentMode = .Baseline
    countdownLabel.position = CGPoint(x: size.width/2, y: size.height*(1/3))
    countdownLabel.fontColor = SKColor.whiteColor()
    countdownLabel.fontSize = size.height / 30
    countdownLabel.zPosition = 100
    countdownLabel.text = "Launching ball in \(count)..."

addChild(countdownLabel)

let counterDecrement = SKAction.sequence([SKAction.waitForDuration(1.0),
    SKAction.runBlock(countdownAction)])

runAction(SKAction.sequence([SKAction.repeatAction(counterDecrement, count: 5),
    SKAction.runBlock(endCountdown)]))

}

func countdownAction() {
    count--
    countdownLabel.text = "Launching ball in \(count)..."
}

func endCountdown() {
    countdownLabel.removeFromParent()
    ball.physicsBody!.applyImpulse(CGVectorMake(20, 20))
}
Run Code Online (Sandbox Code Playgroud)

因此,我创建并设置倒计时的文本,然后创建并运行等待1秒的SKAction,然后再减少倒计时并更新标签.它重复这5次,然后删除倒计时标签,最后给球一个冲动,开始它移动,所以游戏本身可以开始.

似乎工作正常......