Как правильно завершить ARView, который использует проект Reality Composer? - PullRequest
1 голос
/ 10 февраля 2020

У моего проекта есть несколько просмотров, прежде чем он вызовет ARview с проектом composer реальности. Я включил в него представление коучинга, используя демонстрационный код, который предоставляет Apple. Моя проблема в том Если я нажму кнопку go, чтобы вернуться из этого вида, и вызову ее снова, камера начнет мигать от секунды к секунде. Если я делаю это снова, щелчок увеличивается до тех пор, пока, если я сделаю это снова, программа вылетает. Как я могу сделать это представление совершенно новым, как в первый раз, когда я его загрузил? Я пытался удалить якорь из view.session. Пытался приостановить сеанс. Может ли кто-нибудь помочь мне с этим? Это мой код


import UIKit
import RealityKit
import ARKit

class ARHomeViewController: UIViewController {

    @IBOutlet var arView: ARView!
    @IBOutlet weak var coachingOverlay: ARCoachingOverlayView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        presentCoachingOverlay()

        addScene()
    }

    /// Begins the coaching process that instructs the user's movement during
    /// ARKit's session initialization.
    func presentCoachingOverlay() {
        coachingOverlay.session = arView.session
        coachingOverlay.delegate = self
        coachingOverlay.goal = .horizontalPlane
        coachingOverlay.activatesAutomatically = false
        self.coachingOverlay.setActive(true, animated: true)
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        // Prevent the screen from being dimmed to avoid interuppting the AR experience.
        UIApplication.shared.isIdleTimerDisabled = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        arView?.session.pause()
    }

    func addScene()
    {
        guard let anchor = try? ExperienciaCasa.loadMenu() else { return }

        anchor.generateCollisionShapes(recursive: true)

        arView.scene.addAnchor(anchor)
    }

}
...