Sprite kit 如何将标签添加到SCNNode?

Sprite kit 如何将标签添加到SCNNode?,sprite-kit,label,scenekit,arkit,Sprite Kit,Label,Scenekit,Arkit,我正在尝试将标签添加到SCNNode。到目前为止,我已经成功地将SKLabelNode设置为SCNNode的材质。它的工作排序,我可以SCNNode成为背景色的SKLabelNode,但我看不到文本。有时我可以看到红色的薄雾(文本颜色为红色),但没有可读的文本 我还尝试将材质设置为UIView,并将UiLabel添加为子视图。再次设置为我可以整个SCNNode成为UiLabel的背景色,但我看不到任何文本 var block = SCNNode() var spriteScene = SKSce

我正在尝试将标签添加到SCNNode。到目前为止,我已经成功地将SKLabelNode设置为SCNNode的材质。它的工作排序,我可以SCNNode成为背景色的SKLabelNode,但我看不到文本。有时我可以看到红色的薄雾(文本颜色为红色),但没有可读的文本

我还尝试将材质设置为UIView,并将UiLabel添加为子视图。再次设置为我可以整个SCNNode成为UiLabel的背景色,但我看不到任何文本

var block = SCNNode()
var spriteScene = SKScene()
var Lbl = SKLabelNode()

lbl.text = “Hello World”

lbl.color = blue (playground colour literal)
lbl. = 2 //I tried various numbers
lbl.fontColor = SKColor.red
spriteScene.addChild(lbl)

我是经过反复试验才得到的。在获得这些大小、比例和旋转之前,我必须尝试不同的值,以显示我想要的标签。
注意:我这里的节点是SCNPlane,宽度为0.3,高度为0.2,所以场景和矩形的大小以及标签的位置都是相应的硬编码

func addLabel(text: String){
    let sk = SKScene(size: CGSize(width: 3000, height: 2000))
    sk.backgroundColor = UIColor.clear

    let rectangle = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 3000, height: 2000), cornerRadius: 10)
    rectangle.fillColor = UIColor.black
    rectangle.strokeColor = UIColor.white
    rectangle.lineWidth = 5
    rectangle.alpha = 0.5

    let lbl = SKLabelNode(text: text)
    lbl.fontSize = 160
    lbl.numberOfLines = 0
    lbl.fontColor = UIColor.white
    lbl.fontName = "Helvetica-Bold"
    lbl.position = CGPoint(x:1500,y:1000)
    lbl.preferredMaxLayoutWidth = 2900
    lbl.horizontalAlignmentMode = .center
    lbl.verticalAlignmentMode = .center
    lbl.zRotation = .pi

    sk.addChild(rectangle)
    sk.addChild(lbl)

    let material = SCNMaterial()
    material.isDoubleSided = true
    material.diffuse.contents = sk
    node.geometry?.materials = [material]
    node.geometry?.firstMaterial?.diffuse.contentsTransform = SCNMatrix4MakeScale(Float(1), Float(1), 1)
    node.geometry?.firstMaterial?.diffuse.wrapS = .repeat
    node.geometry?.firstMaterial?.diffuse.wrapS = .repeat
}