Изменить переменную клона в Scenekit - PullRequest
0 голосов
/ 19 ноября 2018

Я создал функцию, которая создает круг, содержащий метку.Мне нужно клонировать эту функцию несколько раз.С помощью функции clone () я могу сделать копию всей геометрии, отлично работает.Теперь мне нужно для каждого клона редактировать текстовую метку.Моя проблема здесь, как отредактировать что-то, что «создано» один раз, чтобы потом клонировать?Как я могу получить доступ к переменным клона и в моем случае «labelNode.text».

Вот мой полный код:

@objc func createInfoPanels(climName: String) -> SCNNode {

let climNode = self.scene.rootNode.childNode(withName: climName, recursively: true)!

let planeGeometry = SCNPlane(width: 1, height: 1)
    planeGeometry.firstMaterial?.diffuse.contents = NSColor.clear

let planeNode = SCNNode(geometry: planeGeometry)
    planeNode.name = "planeNode"
    planeNode.position.y = 4

let skScene = SKScene(size: CGSize(width: 200, height: 200))
    skScene.backgroundColor = NSColor.clear

let rectangle = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 200, height: 200), cornerRadius: 100)
    rectangle.fillColor = .gray
    rectangle.alpha = 0.8
    rectangle.blendMode = .add
    rectangle.lineWidth = 0

let labelNode = SKLabelNode()
    labelNode.text = "°C"
    labelNode.fontSize = 45
    labelNode.position = CGPoint(x: 100, y: 100)
    labelNode.yScale = -1

skScene.addChild(rectangle)
skScene.addChild(labelNode)

let panelMaterial = SCNMaterial()
    panelMaterial.isDoubleSided = false
    panelMaterial.diffuse.contents = skScene

planeGeometry.materials = [panelMaterial]

climNode.addChildNode(planeNode)
planeNode.constraints = [SCNBillboardConstraint()]

return planeNode

}

Заранее спасибо за вашу помощь!

...