2017-11-24 19 views
1

私はSwiftを使用してAugmented Reality Sprite Kitゲームを作成していますが、一時停止メニューを実装しようとしています。私はLayer for pause menuに見られるコードを適応しようとしましたが、役に立たないです。ARSKViewでポーズメニューを作成するにはどうすればよいですか?

私はsceneView.isPaused =真使用して一時停止するARSKViewを取得することができたが、それはすべてです - 私のポーズメニュー層は表示されません。

+0

あなたは、ポーズメニューは、現在のARコンテンツ上記の "2D" の画面になりたいですか?またはポーズメニューをAR世界に表示したいですか? – nathan

+0

@nathan ARコンテンツの上に表示される2D画面 – podomunro

答えて

2

通常はSpriteKitのようにpauseNodeを作成する代わりに、ARSKViewの上に別のビューを作成します。

ストーリーボードまたはビューコントローラーのいずれかに、フルスクリーンに固定されている別のビューを追加します。 UIKitまたはSpriteKitを使用してメニュー(ラベル、ボタンなど)を作成するかどうかによって、UIViewまたはSKViewのいずれかになります。 UIKitを使用することをお勧めします。これは、ユーザーインターフェイスを構築するために設計されているためです。

ビュー階層は次のようなものになります。これらのビュー間で通信するには

-- UIViewController 
    -- UIView/SKView 
    -- ARSKView 

は、ボタンが押されたときに、あなたのビューコントローラに通知するために、ポーズメニューデリゲートを設定します。あなたのビューコントローラで

class PauseMenuView: UIView { 

    weak var delegate: PauseMenuViewDelegate? 

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

    ... 

} 

:あなたのポーズメニュービューで

protocol PauseMenuViewDelegate: class { 
    func pauseMenuUnPauseButtonPressed() 
} 

class ViewController: UIViewController { 

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

    ... 

} 

extension ViewController: PauseMenuViewDelegate { 

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

} 
+0

ありがとうございます。しかし、ストーリーボードでは、同じViewController内にARSKViewとUIViewの両方を持つことはできないようです - ストーリーボードと階層の両方にドラッグするだけで、他のものを上書きします。 – podomunro

+0

@podomunroデフォルトのARテンプレート? – nathan

+0

はい、私は何もしませんでした。 – podomunro

関連する問題