无法用swift引用Xcode GameScene.sks

时间:2015-07-13 19:15:34

标签: ios swift sprite-kit

我是一个初学者并开始我的第一次快速游戏。似乎GameScene.sks接口可以非常容易地为每个级别定位我的标签和节点,但我无法弄清楚如何使用swift引用节点。 例如,我拖过一个标签作为计时器,但我不知道如何用代码更新标签文本。 我想的是:

func timerDidFire(){
    countDown--
    SKLabelNode.name("countDownTimerLabel").text = countDown
}

1 个答案:

答案 0 :(得分:2)

您需要在SKNode上使用childNodeWithName方法。例如:

func timerDidFire() {
    let label = childNodeWithName("countDownTimerLabel") as! SKLabelNode
    label.text = --countDown

    // I believe this is an appropriate case for force unwrapping since you're going to 
    // want to know if your scene doesn't contain your label node. 
}

由于您经常要访问SKLabelNode,并且搜索节点树需要时间(不是很多,但要记住的事情),这可能是一个好主意保留对标签的引用。例如,在SKScene子类中:

lazy var labelNode: SKLabelNode = self.childNodeWithName("countDownTimerLabel") as! SKLabelNode

在相关说明中,如果您要查找多个节点,则 enumerateChildNodesWithName(_:usingBlock:)也在SKNode上。

最后,有关更多信息,请查看Apple's WWDC 2014 talk: Best Practices for Building SpriteKit Games,其中包含我提到的两种方法。