0

我正在设置标签

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 = "Score: 100" 那么它将完美运行,但分数显然不会更新。最初我有它 \(score) 但我将其更改为静态文本以查看是否是问题所在。关于为什么会这样的任何想法?

有一件事,如果它的 \(score) 而不是 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))

更新

这绝对是某种字体类型。我删除了字体名称,只是做了一个常规标签,没有问题,但字体当然是错误的。

4

2 回答 2

0

您的问题实际上是字体和.text. 如果需要,看起来字体会被加载。所以你需要设置一个字体变量来保存你的字体,你可以在以后随时访问。

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

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

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

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

于 2015-02-17T21:55:06.113 回答
0

有人删除了答案,所以又来了

谢谢

如何缓存或预加载 SKLabelNode 字体?

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

于 2015-02-19T13:57:02.387 回答