У меня есть 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)
}
}
}