Peek和Pop函数SpriteKit

时间:2017-02-12 15:49:27

标签: ios swift sprite-kit 3dtouch

我在'SKScene'中有一个菜单。我正在尝试将Peek和Pop功能集成到其中。我有多种可能的选择,所以我的问题是如何识别哪一个被强制触摸。

这是我的代码:

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中,我不知道该怎么做。我不知道如何在菜单中执行此操作,我将在哪里放置此代码?

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

1 个答案:

答案 0 :(得分:0)

你将无法在SKScene或SKSpriteNode菜单中使用Peek和Pop,就像你正在尝试一样,我试图在我的一个游戏中做同样的事情。

Peek和Pop仅适用于UIKit,特别是它允许您预览(Peek)而不是打开(Pop)UIViewControllers。

在SpriteKit中,你通常只有1个ViewController,GameViewController。 GameViewController应该只处理你的SKScene演示文稿,你的实际用户界面是/应该在相关的SKScenes中直接使用SpriteKit API,如SKLabelNodes,SKSpriteNodes等。因此,你真的没有使用UIKit,你可以用Peek和Pop预览。

这有一些例外,所以它取决于你正在制作什么样的游戏。例如,在我的一个游戏中,我使用UICollectionViewController作为我的级别选择菜单(40级),因为它们非常适合该场景(单元重用,平滑滚动等)。因为该菜单是使用UIKit制作的,所以当您强行触摸单元格时,我可以注册窥视和弹出。我还有另外一个带有UILabel,UIImageViews等的UIViewController,我专门用于Peeking(见图),当我弹出时我只是开始实际的水平。

总而言之,在SpriteKit中使用Peek和Pop的情况并不多。我也不建议尝试使用UIKIt设计您的UI,以便您可以使用Peek和Pop。希望Apple有一天会更新API,以便能够查看和播放SKNodes或SKScenes,这将是非常棒的。

希望这有帮助

enter image description here