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

标签 ios swift sprite-kit skscene sklabelnode

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

}

在碰撞发生后,应用程序崩溃并显示“展开可选值时意外发现 nil”。我做错了什么以及我怎样才能做对?谢谢!

最佳答案

根据您提供的代码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
     }
}

关于ios - 更改从场景编辑器添加的 SKLabelNode 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417422/

相关文章:

ios - 如何将 UITextField 旋转 90 度以使文本垂直?

ios - 为 Swift 2.0 集成音频和加速度计? (使用核心运动)

swift - 节点在背景后面生成,我无法将它们带到前面

c# - Swift:可以像 lambda 一样使用闭包来查找数组中的对象吗?

ios - 如何知道哪个 SKSpriteNode 受到 Swift 中碰撞检测的影响?

ios - 在 SpriteKit 中检查节点和实例类型之间的碰撞

ios - 更改 UIButton 的标题不起作用

iphone - 使用数组索引对数组进行排序

ios - 从 Xamarin 中的代码隐藏创建 UIViewController

swift - 通过在 map 上滑动来拖动 GoogleMaps-Marker