我的标签不会更新并导致我的游戏崩溃

My label won't update and is causing my game to crash

我对 swift 和一般编码还很陌生,非常感谢您的帮助!我有一个 CCLabelTTF 作为某种记分器,它应该在你每次通过和障碍物时更新。碰撞正在发生,我的控制台中的点数似乎在正确增加,但我正在尝试使用它来更新屏幕上显示的实际 CCLabelTTF:

    func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, goal: CCNode!) -> Bool {
    goal.removeFromParent()
    points++
    scoreLabel.string = String(points) //the line appearing to cause the crash 
    return true
}

我正在使用 SpriteBuilder,Xcode 如果有帮助的话。对不起,如果这是一个愚蠢的问题!

编辑:这是我的 scoreLabel 声明:

weak var scoreLabel : CCLabelTTF!

根据您的标签声明,这可能意味着您的标签是 nil。确保您正在添加标签。

要对其进行测试,请将代码更改为如下所示:

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, hero nodeA: CCNode!, goal: CCNode!) -> Bool {
    goal.removeFromParent()
    points++
    if scoreLabel != nil {
        scoreLabel.string = String(points)
        print("scoreLabel exists")
    } else {
        print("scoreLabel is nil")
    }
    return true
}

如果它在控制台中打印 "scoreLabel is nil",则测试确认您的标签不存在。

编辑

你说你从未初始化过标签,所以将此代码添加到适当的函数中(viewDidLoad: 或 cocos-2d 中的一些等价物——我不太熟悉它):

scoreLabel = CCLabelTTF(string: "", fontName: "FONT_NAME_HERE", fontSize: FONT_SIZE_HERE)

我想通了!我在 spriteBuilder 中建立了一个代码连接,我猜它没有保存,所以它使 scoreLabel 为零。感谢大家的帮助:)