我是一个初学者并开始我的第一次快速游戏。似乎GameScene.sks接口可以非常容易地为每个级别定位我的标签和节点,但我无法弄清楚如何使用swift引用节点。 例如,我拖过一个标签作为计时器,但我不知道如何用代码更新标签文本。 我想的是:
func timerDidFire(){
countDown--
SKLabelNode.name("countDownTimerLabel").text = countDown
}
答案 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,其中包含我提到的两种方法。