将 SKLabelNode 添加到场景工具包视图

Posted

技术标签:

【中文标题】将 SKLabelNode 添加到场景工具包视图【英文标题】:Adding an SKLabelNode to Scene Kit View 【发布时间】:2016-10-05 11:22:00 【问题描述】:

我正在使用 Scene Kit 构建游戏。为了在屏幕上显示分数,我想在屏幕上使用 SKLabelNode,但是,当我将它附加到 SCNNode 时,它​​看起来非常模糊:

这是我为此编写的代码,请告诉我是否有更好的方法来做到这一点,而不会使文本如此模糊。非常感谢!

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有什么关系? 标签节点是 skScene 的子节点,通过 skScene 作为材质的平面连接到 HUDNode 我没有在您的代码中看到相关标签节点与 hudNode 的关系。 HUDNode 在 SceneKit 中充当 2D 平面来显示标签,由于某种原因它真的很模糊。有没有办法不必将 SKLabel 附加到 SceneKit 节点? 如果你不是这个意思,我建议你从头开始重述第二句。 【参考方案1】:

为 SceneKit 场景制作 HUD 的典型方法是创建一个 SpriteKit SKScene 并将其设置为 SceneKit 视图的 overlaySKScene。然后它以全分辨率渲染,并且始终以相同的相对视图大小和位置进行渲染。

【讨论】:

你能把代码写在这里吗?我不明白这个

以上是关于将 SKLabelNode 添加到场景工具包视图的主要内容,如果未能解决你的问题,请参考以下文章

将孩子添加到场景 ARKit/SceneKit 时 FPS 下降

快速删除精灵/标签(removeallchildren)

如何将图像后处理着色器的结果添加到场景中

如何将 3D 模型添加到场景中以使它们具有特定的 XYZ 位置?

第一步是 THREE.js:尝试将搅拌机模型添加到场景中的问题

三个JS:如何使用PNG纹理将Point Light添加到场景中?