如何在ARSKView中创建暂停菜单?

时间:2017-11-24 11:08:02

标签: ios swift sprite-kit arkit

我正在使用Swift创建一个增强现实精灵套件游戏,我希望实现一个暂停菜单。我试图调整Layer for pause menu中看到的代码,但无济于事。

我已经能够使用 sceneView.isPaused = true 暂停ARSKView,但这就是全部 - 我的暂停菜单图层没有出现。

1 个答案:

答案 0 :(得分:2)

而不是像pauseNode中通常那样创建SpriteKit,而是在ARSKView上方创建另一个视图。

在故事板或视图控制器中,添加另一个固定为全屏的视图。这可以是UIViewSKView,具体取决于您是要使用UIKit还是SpriteKit来创建菜单(标签,按钮等)。我建议使用UIKit,因为它是为构建用户界面而设计的。

视图层次结构如下所示:

-- UIViewController
    -- UIView / SKView
    -- ARSKView

要在这些视图之间进行通信,请设置暂停菜单委托,以便在按下按钮时通知视图控制器。

protocol PauseMenuViewDelegate: class {
    func pauseMenuUnPauseButtonPressed()
}

在暂停菜单视图中:

class PauseMenuView: UIView {

    weak var delegate: PauseMenuViewDelegate?

    @IBAction func unPauseButtonPressed() {
        delegate?.pauseMenuUnPauseButtonPressed()
    }

    ...

}

在视图控制器中:

class ViewController: UIViewController {

    @IBOutlet weak var pauseMenuView: PauseMenuView! {
        didSet { pauseMenuView.delegate = self }
    }

    ...

}

extension ViewController: PauseMenuViewDelegate {

    func pauseMenuUnPauseButtonPressed() {
        // unpause the game here
    }

}