我正在使用Swift创建一个增强现实精灵套件游戏,我希望实现一个暂停菜单。我试图调整Layer for pause menu中看到的代码,但无济于事。
我已经能够使用 sceneView.isPaused = true 暂停ARSKView,但这就是全部 - 我的暂停菜单图层没有出现。
答案 0 :(得分:2)
而不是像pauseNode
中通常那样创建SpriteKit
,而是在ARSKView
上方创建另一个视图。
在故事板或视图控制器中,添加另一个固定为全屏的视图。这可以是UIView
或SKView
,具体取决于您是要使用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
}
}