我怎么能指出一个从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()