scoreLabel.text让游戏暂停

时间:2015-02-17 20:59:26

标签: swift sprite-kit sklabelnode

我正在设置标签

let scoreLabel = SKLabelNode(fontNamed: "Edit Undo Line BRK")

在函数中

func increaseScoreBy(increment: Int) {
    score += increment
    scoreLabel.text = "Score: 100"
    scoreLabel.removeAllActions()
    scoreLabel.runAction(scoreFlashAction)
}

如果我将scoreLabel.text =“得分:100”注释掉,那么它将完美运行,但分数显然不会更新。最初我有它(得分),但我把它改为静态文本,看看是不是问题。关于为什么会这样做的任何想法?

有一件事,如果它的\(得分)而不是100,它会在每次分数更新时暂停(暂时冻结)游戏,如果其硬编码,它只会在第一次冻结。

update

在游戏设置中初始化scoreLabel

scoreLabel.fontsize = 50
scoreLabel.text = "Score: 0"
scoreLabel.name = "scoreLabel"
scoreLabel.verticalAlignmentMode = .Center
scoreLabel.position = CGPoint( x: size.width / 2, y: size.height - scoreLabel.frame.size.height + 3)
hudLayerNode.addChild(scoreLabel)

scoreFlashAction = SKAction.sequence([SKAction.scaleTo(1.5, duration: 0.1), SKAction.scleTo(1.0, duration: 0.1)])
scoreLabel.runAction(SKAction.repeatAction(scoreFlashAction, count: 20))

更新

绝对是字体类型。我删除了fontName,只是制作了一个常规标签而没有问题,但当然字体错了。

2 个答案:

答案 0 :(得分:0)

您的问题实际上是字体和.text。如果需要,它看起来像是加载了字体。因此,您需要设置一个字体变量来保存您的字体,以后可以随时访问。

let font = UIFont(name: "Edit Undo Line BRK", size: yourSize)

我建议你在应用程序启动时设置它并将其保存在单例中。 然后你可以访问这样的字体:

let scoreLabel = SKLabelNode(fontNamed: font?.fontName)

现在应该花费更少的时间。

答案 1 :(得分:0)

有人删除了答案,所以这里又是

感谢

How to cache or preload SKLabelNode font?

了解正在发生的事情。虽然这个名字是正确的,但我没有添加"应用程序的字体。要执行此操作,请单击目标和信息选项卡。创建一个由应用程序提供的字体的新密钥"在客户ios目标属性下。展开它并添加字体名称作为项目的值。不要忘记将ttf复制到您的应用程序文件夹中,并确保在您执行时选择复制和目标。