在Scene Kit视图中添加SKLabelNode

4
我正在使用Scene Kit构建一款游戏。为了显示得分,我想在屏幕上使用SKLabelNode,但是,当我将它附加到SCNNode上时,它看起来非常模糊:enter image description here 这是我编写的代码,请告诉我是否有更好的方法,在没有使文本变得模糊的情况下完成此操作。非常感谢!
func initHUD() {

    let skScene = SKScene(size: CGSize(width: 100, height: 100))
    skScene.backgroundColor = UIColor(white: 0.0, alpha: 0.0)

    labelNode = SKLabelNode()
    labelNode.fontSize = 20
    labelNode.position.y = 50
    labelNode.position.x = 50

    skScene.addChild(labelNode)

    let plane = SCNPlane(width: 1, height: 1)
    let material = SCNMaterial()
    material.lightingModelName = SCNLightingModelConstant
    material.doubleSided = true
    material.diffuse.contents = skScene
    plane.materials = [material]

    hudNode = SCNNode(geometry: plane)
    hudNode.name = "HUD"
    hudNode.rotation = SCNVector4(x: 1, y: 0, z: 0, w: 3.14159265)
    hudNode.position = SCNVector3(x:0, y: 1, z: -5)
}

func updateHUD() {
    labelNode.text = "\(score)"
}

将SKLabelNode附加到SCNNode? 在哪里做? 此外,什么是hudNode,它与SKLabelNode有什么关系? - El Tomato
标签节点是 skScene 的子节点,skScene 通过一个平面作为材质连接到 HUDNode 上。 - DevelUpGames
我在你的代码中没有看到标签节点与hudNode有什么关联。 - El Tomato
HUDNode 在 SceneKit 中充当 2D 平面来显示标签,但由于某种原因它非常模糊。有没有办法不必将 SKLabel 附加到 SceneKit 节点上呢? - DevelUpGames
如果你的意思不是这个,我建议你重新表述一下顶部的第二句话。 - El Tomato
1个回答

8

创建一个 SpriteKit SKScene 并将其设置为你的 SceneKit 视图的 overlaySKScene 是制作 SceneKit 场景中 HUD 的典型方法。这样它会以全分辨率呈现,并始终具有相同的视图相关大小和位置。


你能在这里写下代码吗?我不理解这个。 - Saad Tahir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接