2017-02-12 12 views
1

私は `SKScene 'にメニューを持っています。私はPeekとPop関数をその中に統合しようとしています。私は複数の可能な選択肢を持っていますので、私の問題は、どれがどれに触れているのかを特定する方法です。ピークとポップ機能SpriteKit

これは私のコードです:

import SpriteKit 
import UIKit 

class Menu: SKScene, UIViewControllerPreviewingDelegate { 

//SETUP Menu 


func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { 
     return UIViewController() 
    } 

    //POP 
    func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { 
     return 
    } 

} 

はGameViewController.swift:

import UIKit 
import SpriteKit 

class GameViewController: UIViewController { 


    override func viewDidLoad() { 
    super.viewDidLoad() 

    if let scene = GameScene(fileNamed:"GameScene") { 
     if self.traitCollection.forceTouchCapability == .available { 
      registerForPreviewing(with: scene as! UIViewControllerPreviewingDelegate, sourceView: scene.view!) 
      } 
     } 

     // Move to Menu 

} 
} 

私はsourceViewフィールドに情報を渡すべきであることを確信しています。しかし、これはGameViewControllerにあるので、私は何をすべきか分かりません。メニューの中でこれを行う方法はわかりません。どこにこのコードを置くのですか?あなたがしようとしているようSKSceneまたはSKSpriteNodeメニューで覗くとポップを使用することはできません

if let scene = GameScene(fileNamed:"GameScene") { 
      if self.traitCollection.forceTouchCapability == .available { 
       registerForPreviewing(with: scene as! UIViewControllerPreviewingDelegate, sourceView: ButtonPressed) 
      } 
     } 

答えて

0

、私は私のゲームの一つで同じことをやろうとしました。

PeekとPopは、UIKitでのみ動作します。具体的には、UIViewControllerをプレビュー(Peek)して開く(Pop)ことができます。

SpriteKitには通常、ViewController、GameViewControllerが1つしかありません。そのGameViewControllerはあなたのSKSceneプレゼンテーションのみを処理する必要があります。あなたの実際のUIは、関連するSKScenesで直接SKLabelNodes、SKSpriteNodesなどのSpriteKit APIを使用して実行する必要があります。したがって、実際にはUIKitを使用しないで、PeekとPopでプレビューすることはできません。

これにはいくつかの例外があります。そのため、ゲームの種類によって異なります。たとえば、自分のゲームの1つでは、自分のレベル選択メニュー(40レベル)にUICollectionViewControllerを使用しています(セル再利用、円滑なスクロールなど)。このメニューはUIKitで作成されているため、セルにタッチすると、ピークとポップを登録できます。私はいくつかのUILabels、UIImageViewsなどと別のUIViewControllerを持っています。私はPeeking(画像参照)を使用しています。

要するに、SpriteKitでPeekとPopを使用できる状況はあまりありません。また、PeekとPopを使用できるように、UIKitでUIをデザインしようとするのはお勧めしません。うまくいけば、アップルはAPIをいつか更新して、いつSKNodeやSKScenesを覗き見ることができれば素晴らしいだろう。

希望これは

enter image description here

+0

おかげで、それはゲームであるとSpriteKitベースに作られなければならないと残念ながら私は、メニューを再設計することができないのに役立ちます。 –

+0

ようこそ。私はあなたのメニューも再設計しないでしょう、SpriteKitのUIKitを使いこなす(ColletionViews、ScrollViewsを除く)あなたがまだそれをしていないのであれば、3Dタッチクイックアクションを見てください。それらは簡単にSpriteKitに統合できます。ハッピーコーディング – crashoverride777

+0

ええ、私はクイックアクションを持っています –

関連する問題