Программное изменение текста 3D TextNode в SceneKit с помощью Swift
3 ответа
Решение
Когда вы создаете экземпляр объекта "3D-текст" из библиотеки объектов в XCode, вы получаете SCNNode
это имеет SCNText
как его geometry
,
if let textGeometry = textNode.geometry as? SCNText {
textGeometry.string = "something"
}
Поэтому, если вы связали свой текстовый узел со своей игровой сценой, программно вы можете сделать:
textNode.geometry.string = "your string"
Он должен работать!
Это то, что сработало для меня. Предположим, вы добавили трехмерный текстовый узел в конструктор интерфейса и он называется "CountDownText" в иерархии узлов.
В соответствующем контроллере представления у меня есть два свойства:
var countDownText: SCNNode!
var theCountDownText: SCNText!
Позже, свяжите узел из компоновщика интерфейса с кодом (в функции настройки узла):
countDownText = scnScene.rootNode.childNode(withName: "CountDownText", recursively: true)
theCountDownText = countDownText.geometry as! SCNText
В любое время, когда вы хотите изменить отображаемый текст этого узла, вы можете просто сделать следующее:
theCountDownText.string = "text"