Программное изменение текста 3D TextNode в SceneKit с помощью Swift

Поэтому я поместил 3D-текстовый узел в мою сцену SCN, и я хотел бы изменить значение свойства Text позже в моем приложении.

SceneKit Инспектор

Выше показано, как я могу изменить значение текста из инспектора, но есть ли способ сделать это программно? благодарю вас

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"
Другие вопросы по тегам