【问题标题】:My label won't update and is causing my game to crash我的标签不会更新并导致我的游戏崩溃
【发布时间】:2016-05-29 22:57:12
【问题描述】:

我对 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!

【问题讨论】:

  • 什么是崩溃信息?
  • 线程 1:XC_BAD_INSTRUCTION(代码=XC_I386_INVOP,子代码=0x0)

标签: xcode swift cocos2d-iphone spritebuilder


【解决方案1】:

从您的标签声明来看,这可能意味着您的标签是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)

【讨论】:

  • @BrianLobo 你能在你的问题中添加scoreLabel的声明行吗?
  • 我将其添加到我的问题中。
  • 是的,它返回“scoreLabel is nil”。要解决这个问题,我是否必须做出新的声明? (再次抱歉,很新。)
  • @BrianLobo 你在某处初始化标签吗?如果您这样做,请在您的问题中发布该功能。
  • 不,我没有初始化它。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多