删除并再次调用后,pointOfView节点未出现

时间:2018-06-23 12:59:38

标签: ios swift augmented-reality arkit scnnode

所以我正在开发一个AR应用程序。我有一个按钮可以启动一个考试/测试模式,使用该模式必须正确回答问题并为每个正确答案获得一个分数。启动测试模式后,将使用defaultCameraController中的pointOfView节点,并将分数显示在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)


    }

编辑:在与问题相关的代码附近添加了注释行。

0 个答案:

没有答案