首页 > 解决方案 > 为什么在 Sprite-kit 中创建 SKLabelNode 会导致“线程 1:致命错误:在隐式展开可选值时意外发现 nil”

问题描述

我正在尝试SKLabelNode在 SpriteKit 中创建一个分数标签,它导致项目因以下错误而崩溃:

线程 1:致命错误:在隐式展开可选值时意外发现 nil

我尝试了许多替代方法,但都会导致相同的错误。这是代码的基本版本。

class LevelScene: SKScene {

    // Coin Label + Constants
    var coinLabel: SKLabelNode!

    var currentCoins = 0 {
        didSet {
            coinLabel.text = ":\(currentCoins)"
        }
    }

    override func didMove(to view: SKView) {
        // Coin Label
        coinLabel.text = ":0"
        coinLabel.position = CGPoint(x: 0, y: 0)
        addChild(coinLabel)
    }
}

标签: swiftsprite-kit

解决方案


尝试首先像这样创建一个 SKLabelNode 对象


class LevelScene: SKScene {

    // Coin Label + Constants
    var coinLabel: SKLabelNode!

    var currentCoins = 0 {
        didSet {
            coinLabel.text = ":\(currentCoins)"
        }
    }

    override func didMove(to view: SKView) {
        // Coin Label
        coinLabel = SKLabelNode() // Here you initialize the SKLabelNode
        coinLabel.text = ":0"
        coinLabel.position = CGPoint(x: 0, y: 0)
        addChild(coinLabel)
    }
}


发生此错误是因为您尝试在初始化之前访问标签。

希望这有帮助。


推荐阅读