3D Touch和SpriteKit

4
有人尝试过使用3D Touch和SpriteKit吗?
我一直在观看有关3D Touch的教程,它似乎大多数情况下都很简单。然而,所有的教程都是关于使用多个视图控制器的常规应用程序(使用故事板ID、预览控制器等)。
那么,是否可能将3D Touch与通常只有1个ViewController的SpriteKit集成呢?
我的计划如下:
1)主屏幕快捷方式,可以加载不同的场景(商店场景、第1级、第2级等)。
2)Peek和Pop,也许用于菜单。你甚至可以将Peek和Pop用于SKNodes等吗?
感谢任何提示或建议。
1个回答

1

是的,您可以集成3D Touch和SpriteKit。

使用默认的SpriteKit游戏项目模板(Swift),将您的GameScene设置为UIViewControllerPreviewingDelegate并实现协议的方法,像这样:

public class GameScene: SKScene, UIViewControllerPreviewingDelegate {
  public func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {  
    return UIViewController()
  }

  //Pop
  public func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
    return
  }
}

在GameViewController.swift的viewDidLoad中,添加以下内容:
if let scene = GameScene(fileNamed:"GameScene") {
  if self.traitCollection.forceTouchCapability == .Available {
    registerForPreviewingWithDelegate(scene, sourceView: scene.view!)
  }
}

在委托方法中,我返回一个空的视图控制器。你可以创建一个类级变量,并使用适当的peek类型视图实例化此VC。再次举一个非常简单的例子。如果您想从AppIcon交互中添加3D Touch,则需要修改Info.plist并从AppDelegate添加功能。这个主题有一个很好的视频。祝好运!

你是个牛人。假期后我有时间会试一下。很快我会发一些反馈。非常感谢。 - crashoverride777
我该如何使用这段代码来识别哪个对象被按下了? - Niall Kehoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接