Итак, я разрабатываю приложение AR.У меня есть кнопка, которая запускает режим экзамена / теста, где пользователь должен правильно отвечать на вопросы и получает один балл за каждый правильный ответ.Когда запускается тестовый режим, используется узел pointOfView из defaultCameraController, и оценка отображается в ARSCN.Завершение теста удаляет узел с экрана.Однако после того, как я снова нажму на кнопку тестирования в том же сеансе, код будет вызван, однако он не появится на экране.Код для кнопки запуска теста, кнопки остановки теста и функции табло настройки показаны ниже.Извините беспорядок.Я должен организовать код после исправления функциональности.
@IBAction func testButton(_ sender: Any) {
if sceneView.scene.rootNode.childNodes.count > 0{
testScore = 0
learningModeEnabled = false
learningMode.isEnabled = false
for nodePos in nodePositions{
// Create 3D Text
}
startTestButton.isHidden = true
stopTestButton.isHidden = false
//--------------------------------------------------------------------------
setupScoreboard()}
else{
print("No Nodes Detected in Environment")
}
}
@IBOutlet weak var stopTestButton: PressableButton!
@IBAction func stopTestButton(_ sender: Any) {
nodePositions = [:]
sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
node.removeFromParentNode()
}
stopTestButton.isHidden = true
startTestButton.isHidden = false
let userDefaults = UserDefaults.standard
userDefaults.setValue(testScore, forKey: "score")
userDefaults.synchronize()
//--------------------------------------------------------------------------
self.sceneView.defaultCameraController.pointOfView?.enumerateChildNodes({ (node, stop) in
node.removeFromParentNode()
})
if userDefaults.data(forKey: "score") != nil{
userScores = userDefaults.array(forKey: "score") as! [Int]
print(userScores)
}
}
//--------------------------------------------------------------------------
func setupScoreboard(){
self.sceneView.defaultCameraController.pointOfView?.enumerateChildNodes({ (node, stop) in
node.removeFromParentNode()
})
let worldCoord : SCNVector3 = (self.sceneView.defaultCameraController.pointOfView?.position)!
let node : SCNNode = self.createNewBubbleParentNode("Score: \(String(testScore))")
node.position = SCNVector3( 0, 0.3, -1)
node.name = "Scoreboard"
self.sceneView.defaultCameraController.pointOfView?.addChildNode(node)
}
Редактировать: Добавлены строки комментариев рядом с кодом, относящимся к вопросу.