我试图将SKLabelNode添加为SKSpriteNode的子项:
var mainNode = SKSpriteNode()
override func didMoveToView(view: SKView) {
mainNode = SKSpriteNode(color: UIColor.redColor(), size: self.size)
mainNode.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
mainNode.zPosition = -2
mainNode.name = "MainNode"
self.addChild(mainNode)
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!"
myLabel.fontSize = 45
myLabel.position = CGPoint(x:CGRectGetMidX(mainNode.frame), y:CGRectGetMidY(mainNode.frame))
mainNode.addChild(myLabel)
}
但SKLabelNode没有出现。我试图改变它的zPosition,但它无论如何都没有用。
如果我在场景上添加标签(self.addChild(myLabel)
),它就可以正常使用
答案 0 :(得分:3)
你的问题是CGPoint(x:CGRectGetMidX(mainNode.frame), y:CGRectGetMidY(mainNode.frame))
使你的标签超出范围。因此,如果您希望SKLabelNode水平和垂直居中,您可以像这样做
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!"
myLabel.fontSize = 45
myLabel.horizontalAlignmentMode = .Center
myLabel.verticalAlignmentMode = .Center
mainNode.addChild(myLabel)