Xcode:使用 Swift 将默认自定义字体添加到 SKLabelNode
Xcode: Add default custom font to SKLabelNode with Swift
我到处都找过了,但我只能找到如何更改 UILabel 字体,找不到任何地方教如何更改默认 SKLabelNode 字体。我如何在 Xcode 和 swift 中做到这一点?
我已经将字体添加到 Info.plist
我也试过添加一个可以更改默认字体的扩展,但也没有用
更改一个 SKLabelNode 的字体
您可能已经知道,您可以使用 fontName
属性.
更改 SKLabelNode
的字体
let label = SKLabelNode(fontNamed:"Chalkduster")
label.fontName = "Arial"
更改所有 SKLabelNode 的字体
现在,如果我没记错的话,您想为场景中的所有标签更改fontName
。
首先,我们需要一种简单的方法来访问场景图中的所有节点。我的意思是,不仅是场景的直接子级,还有每个子级的子级......
访问场景图
我能想到的最好的方法是在 SKNode
中实现 visit
扩展
extension SKNode {
func visit(logic: (node:SKNode) -> ()) {
logic(node:self)
children.forEach { [=12=].visit(logic) }
}
}
现在 SKNode
有一个接收闭包的 visit
函数。闭包应用于当前节点和每个子节点。然后递归重复这个过程,直到有新的后代。
启动递归
现在在你GameScene
你可以添加这段代码
class GameScene: SKScene {
func changeFonts() {
visit { (node) -> () in
if let label = node as? SKLabelNode {
label.fontName = "Arial"
}
}
}
}
最后,当您准备好调用 changeFonts()
。
它应该可以完成工作。
记得用a font available in SpriteKit.
我到处都找过了,但我只能找到如何更改 UILabel 字体,找不到任何地方教如何更改默认 SKLabelNode 字体。我如何在 Xcode 和 swift 中做到这一点?
我已经将字体添加到 Info.plist
我也试过添加一个可以更改默认字体的扩展,但也没有用
更改一个 SKLabelNode 的字体
您可能已经知道,您可以使用 fontName
属性.
SKLabelNode
的字体
let label = SKLabelNode(fontNamed:"Chalkduster")
label.fontName = "Arial"
更改所有 SKLabelNode 的字体
现在,如果我没记错的话,您想为场景中的所有标签更改fontName
。
首先,我们需要一种简单的方法来访问场景图中的所有节点。我的意思是,不仅是场景的直接子级,还有每个子级的子级......
访问场景图
我能想到的最好的方法是在 SKNode
visit
扩展
extension SKNode {
func visit(logic: (node:SKNode) -> ()) {
logic(node:self)
children.forEach { [=12=].visit(logic) }
}
}
现在 SKNode
有一个接收闭包的 visit
函数。闭包应用于当前节点和每个子节点。然后递归重复这个过程,直到有新的后代。
启动递归
现在在你GameScene
你可以添加这段代码
class GameScene: SKScene {
func changeFonts() {
visit { (node) -> () in
if let label = node as? SKLabelNode {
label.fontName = "Arial"
}
}
}
}
最后,当您准备好调用 changeFonts()
。
它应该可以完成工作。
记得用a font available in SpriteKit.