我怎么能指出一个从SKScene使用UIKit创build的视图?

我有一个名为“MainScene.swift”的SKScene文件,并在其上创build了一个button,供用户跳转到另一个页面。 另一个页面不是由SpriteKit创build的,而是由UIKit创build的。 在这种情况下,我如何指定目标页面并编写代码?

如果我使用SpriteKit创build了两个页面,我通常会跳到其他场景。

override func viewDidLoad() { super.viewDidLoad() let scene = MainScene(size: CGSize(width: 750, height: 1334)) let skView = self.view as! SKView scene.scaleMode = .AspectFit skView.presentScene(scene) } 

当我在UIKit创build的场景上做同样的事情时,在Identity列上键入一个Storyboard ID,然后像这样编码; 我只知道使用故事板的方式。

 class ViewController: UIViewController { @IBAction func gotoNewPage(sender: AnyObject) { let nextVC = self.storyboard?.instantiateViewControllerWithIdentifier("newPage") presentViewController(nextVC!, animated: false, completion: nil) } } 

但是当在创buildSKScene和UIKit的场景之间尝试同样的东西时,我不知道如何从前一个场景指定后者; 我不坚持使用故事板。 如果有任何简单的方法,请让我知道。 先谢谢你。

这听起来像委托模式的工作。 为LevelScene添加一个协议;

 // LevelScene.swift protocol LevelScene : class { var gameDelegate: GameDelegate? { get set } } 

为GameDelegate添加一个协议;

 // GameDelegate.swift protocol GameDelegate : class { func gameOver() } 

在你的mainScene中添加协议引用并创build一个名为gameDelegate的属性;

 class MainScene: SKScene, LevelScene { weak var gameDelegate: GameDelegate? } 

在你的GameViewController中添加协议引用,并实现所需的协议function – 在这种情况下,它被称为gameOver,像往常一样seque到你的UIKit视图;

 class GameViewController: UIViewController, GameDelegate { func gameOver() { self.performSegue(withIdentifier: ExitGameSegueKey, sender: self) } } 

呈现场景时将委托设置为gameViewController;

 scene.gameDelegate = self 

然后在mainScene需要的时候调用委托函数;

 self.gameDelegate?.gameOver()