自定义 SKShapeNode Child 未出现

Custom SKShapeNode Child Not Appearing

我想让一个数字出现在 SKShapeNode 的中间。但是,由于某种原因,当我将 SKLabelNode 添加为形状节点的 child 时,尽管 SKShapeNode 确实出现了,但它并没有出现。我添加了与 SKScene 的 child 相同的标签,它看起来很好。这是自定义 class:

的代码
class Dot: SKShapeNode {
    var numLabel = SKLabelNode(fontNamed: "MarkerFelt-Wide")
    func setNumber(i: Int) {
        numLabel.text = String(i)
        numLabel.fontColor = UIColor.whiteColor()
        numLabel.fontSize = 200
        numLabel.setScale(numLabel.frame.width / self.frame.width / 2)
        numLabel.position = CGPointMake(self.frame.midX ,self.frame.midY)
        self.addChild(numLabel)
    }
}

我打电话给 dot.setNumber(1) 但没有任何反应。如果您发现问题,请告诉我。谢谢!

经过反复试验,重新自学 SKNodesUIViews 的工作方式有何不同,我认为您的问题原因如下: .position 属性在 sprite kit 中不是节点角的位置,而是它的中心。此外,当将 SKNode 设置为另一个 SKNode 的子项时,其位置基于其父项,而不是场景。因此,与其将 numLabel 设置为 midXmidY,不如将其设置为:

numLabel.position = CGPointMake(0, 0)

但是,由于某些原因,y 值仍然不正确,至少在我使用的代码中是这样。这可能是由于您缩放 numLabel 的方式所致。所以我用代码修复了它:

numLabel.position = CGPointMake(0, -(numLabel.frame.height / 2))

不过,这并不完美。

有了这些新信息,如果您仍然无法弄清楚,我会进一步研究以获得确切的位置。但是请记住我在post.

开头的回答