更改从场景编辑器添加的 SKLabelNode 的文本
Change the text of a SKLabelNode added from the scene editor
我想更改在名为 myScoreLabel 的场景编辑器中创建的 SKLabelNode 的文本,以更新两个对象碰撞时的分数。这是相关代码:
class holeOne: SKScene, SKPhysicsContactDelegate {
var myScoreLabel: SKLabelNode!
var myscore:Int = 0
func addScore() {
myscore += 1
myScoreLabel.text = "\(myscore)"
}
func didBegin(_ contact: SKPhysicsContact) {
addScore()
}
}
在碰撞发生后的那一刻,应用程序崩溃 "unexpectedly found nil while unwrapping an Optional value"。我做错了什么,我怎样才能做对?谢谢!
您提供的代码 var myScoreLabel: SKLabelNode!
未创建。
首先尝试创建 SKLabelNode
。然后设置值。
示例:
myScoreLabel = SKLabelNode(fontNamed: "Chalkduster")
myScoreLabel.text = "Test"
myScoreLabel.horizontalAlignmentMode = .right
myScoreLabel.position = CGPoint(x: 0, y:10)
addChild(scoreLabel)
或者您可以从 .sks 场景连接它。
override func sceneDidLoad() {
if let label = self.childNode(withName: "myScoreLabel") as? SKLabelNode {
label.text = "Test" //Must add '.text' otherwise will not compile
}
}
太好了,所以最后我这样做了:
class holeOne: SKScene, SKPhysicsContactDelegate {
var myScoreLabel: SKLabelNode!
var myscore:Int = 0
func addScore() {
myscore += 1
if let myScoreLabel = self.childNode(withName: "myScoreLabel") as? SKLabelNode {
myScoreLabel.text = "\(myscore)"
}
}
func didBegin(_ contact: SKPhysicsContact) {
addScore()
}
}
class holeOne: SKScene, SKPhysicsContactDelegate {
var myScoreLabel: SKLabelNode!
var myscore:Int = 0
func addScore() {
myscore += 1
myScoreLabel.text = "\(myscore)"
}
func didBegin(_ contact: SKPhysicsContact) {
addScore()
}
}
在碰撞发生后的那一刻,应用程序崩溃 "unexpectedly found nil while unwrapping an Optional value"。我做错了什么,我怎样才能做对?谢谢!
您提供的代码 var myScoreLabel: SKLabelNode!
未创建。
首先尝试创建 SKLabelNode
。然后设置值。
示例:
myScoreLabel = SKLabelNode(fontNamed: "Chalkduster")
myScoreLabel.text = "Test"
myScoreLabel.horizontalAlignmentMode = .right
myScoreLabel.position = CGPoint(x: 0, y:10)
addChild(scoreLabel)
或者您可以从 .sks 场景连接它。
override func sceneDidLoad() {
if let label = self.childNode(withName: "myScoreLabel") as? SKLabelNode {
label.text = "Test" //Must add '.text' otherwise will not compile
}
}
太好了,所以最后我这样做了:
class holeOne: SKScene, SKPhysicsContactDelegate {
var myScoreLabel: SKLabelNode!
var myscore:Int = 0
func addScore() {
myscore += 1
if let myScoreLabel = self.childNode(withName: "myScoreLabel") as? SKLabelNode {
myScoreLabel.text = "\(myscore)"
}
}
func didBegin(_ contact: SKPhysicsContact) {
addScore()
}
}