scoreLabel.text 使游戏暂停
scoreLabel.text making game pause
我正在设置标签
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))
更新
肯定是字体类型的问题。我删除了 fontName 并只是制作了一个常规标签并且没有问题,但是字体当然是错误的。
你的问题实际上是字体和.text
。看起来字体会在需要时加载。所以你需要设置一个字体变量来保存你的字体,你以后可以随时访问它。
let font = UIFont(name: "Edit Undo Line BRK", size: yourSize)
我建议您在应用程序启动时设置它并将其保存在一个单例中。
然后你可以像这样访问字体:
let scoreLabel = SKLabelNode(fontNamed: font?.fontName)
现在应该花费更少的时间。
有人把答案删了所以又来了
感谢
How to cache or preload SKLabelNode font?
以获取有关正在发生的事情的提示。虽然名称是正确的,但我没有 "added" 应用程序的字体。为此,请单击您的目标和信息选项卡。在客户 ios 目标属性下创建新键 "Fonts provided by application"。展开它并添加字体名称作为项目的值。不要忘记将 ttf 复制到您的应用程序文件夹中,并确保复制和目标都被选中。
我正在设置标签
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))
更新
肯定是字体类型的问题。我删除了 fontName 并只是制作了一个常规标签并且没有问题,但是字体当然是错误的。
你的问题实际上是字体和.text
。看起来字体会在需要时加载。所以你需要设置一个字体变量来保存你的字体,你以后可以随时访问它。
let font = UIFont(name: "Edit Undo Line BRK", size: yourSize)
我建议您在应用程序启动时设置它并将其保存在一个单例中。 然后你可以像这样访问字体:
let scoreLabel = SKLabelNode(fontNamed: font?.fontName)
现在应该花费更少的时间。
有人把答案删了所以又来了
感谢
How to cache or preload SKLabelNode font?
以获取有关正在发生的事情的提示。虽然名称是正确的,但我没有 "added" 应用程序的字体。为此,请单击您的目标和信息选项卡。在客户 ios 目标属性下创建新键 "Fonts provided by application"。展开它并添加字体名称作为项目的值。不要忘记将 ttf 复制到您的应用程序文件夹中,并确保复制和目标都被选中。