Swift ARKit - SKLabelNode внутри SKScene не обновляется с помощью SKAction - PullRequest
0 голосов
/ 22 октября 2018

У меня есть SKLabelNode внутри SKScene, который появляется при распознавании 3D-объекта, в данный момент я пытаюсь сделать так, чтобы метка обновлялась каждую секунду.Однако это не работает в настоящее время.Итак, мой вопрос, как я могу сделать эту работу?Любая помощь очень ценится, большое спасибо !!

ARSCNView:

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {

    let node = SCNNode()

    if let objectAnchor = anchor as? ARObjectAnchor {
        let plane = SCNPlane(width: CGFloat(objectAnchor.referenceObject.extent.x * 0.8), height: CGFloat(objectAnchor.referenceObject.extent.y * 0.5))
        plane.cornerRadius = plane.width / 8

        guard let spriteKitScene = SKScene(fileNamed: "ProductInfo") as? ProductInfo else { return node }

        plane.firstMaterial?.diffuse.contents = spriteKitScene
        plane.firstMaterial?.isDoubleSided = true
        plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)

        let planeNode = SCNNode(geometry: plane)
        planeNode.position = SCNVector3Make(objectAnchor.referenceObject.center.x, objectAnchor.referenceObject.center.y + 0.35, objectAnchor.referenceObject.center.z)
        node.addChildNode(planeNode)
    }
    return node
}

SKScene

class ProductInfo: SKScene {

    var value = Int()

    override func sceneDidLoad() {
        let wait = SKAction.wait(forDuration: 1.0)
        let update = SKAction.run { self.updateValue() }
        let seq = SKAction.sequence([wait, update])
        let rep = SKAction.repeatForever(seq)
        run(rep)
    }

    func updateValue() {
        value = value + 1
        if let label = self.childNode(withName: "myLabel") as? SKLabelNode {
            label.text = String(value)
        }
    }
}
...