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

How would I create a pause menu in ARSKView?

我正在使用 Swift 创建增强现实 Sprite Kit 游戏,我希望实现暂停菜单。我尝试修改 中看到的代码,但无济于事。

我已经能够使用 sceneView.isPaused = true 让 ARSKView 暂停,但仅此而已 - 我的暂停菜单层没有出现。

不是像通常在 SpriteKit 中那样创建 pauseNode,而是在 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
    }

}