我正在尝试向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)
答案 0 :(得分:1)
经过一番打击和审判,我得到了它。在获得这些尺寸,比例和旋转以显示我想要的标签之前,我必须尝试不同的值。
注意:我的节点是SCNPlane,宽度为0.3,高度为0.2,因此SKScene的大小和矩形以及标签的位置都是相应的硬编码。
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
}