Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改从场景编辑器添加的SKLabelNode的文本_Ios_Swift_Sprite Kit_Skscene_Sklabelnode - Fatal编程技术网

Ios 更改从场景编辑器添加的SKLabelNode的文本

Ios 更改从场景编辑器添加的SKLabelNode的文本,ios,swift,sprite-kit,skscene,sklabelnode,Ios,Swift,Sprite Kit,Skscene,Sklabelnode,我想更改在名为myScoreLabel的场景编辑器中创建的SKLabelNode的文本,以更新两个对象碰撞的分数。以下是相关代码: class holeOne: SKScene, SKPhysicsContactDelegate { var myScoreLabel: SKLabelNode! var myscore:Int = 0 func addScore() { myscore += 1 myScoreLabel.text = "

我想更改在名为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()
    }

}

在冲突发生后的一刻,应用程序崩溃,“在展开可选值时意外发现零”。我做错了什么?我怎样才能做对?谢谢

来自您提供的代码
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()
    }

}

MyCoreLabel是您共享的代码中的nill如何使它不是nil?啊,好的,谢谢,为了清晰起见,我添加了一个屏幕截图,我希望我可以在场景编辑器中创建它,而不是通过编程。知道如何更改在场景编辑器中创建的SKLabelNode的文本吗?