Узел pointOfView не появляется после удаления и повторного вызова - PullRequest
0 голосов
/ 23 июня 2018

Итак, я разрабатываю приложение 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)


    }

Редактировать: Добавлены строки комментариев рядом с кодом, относящимся к вопросу.

...