添加SKScene到UIViewController?

我刚刚在界面生成器中创build了一个新的UIViewController 。 它是从UITableViewController (单元格)segued。 我现在想在这个UIViewController里面使用SKScene 。 这是如何完成的?

而对于一个侧面说明…

如果SKScene占用了整个UIViewController.view ,那么你可以在场景上覆盖UIKit对象吗?

或者更好的是在UIViewController.view创build一个单独的UIView来保存SKScene ,然后围绕这个单独的UIView布局UIKit对象,并让默认的UIViewController.view作为所有这些元素的容器? 如果采取这种方法,理论上可以通过SKScene访问这些UIKit对象吗?

  1. 添加一个SKView到你的viewController。
  2. 添加一个SKScene到你的SKView。

您可以覆盖SKScene中的UIKit项目。 这就是我在游戏中使用集合和表格视图的方式。 但是,他们需要作为SKView中的子视图添加到SKScene中。

SKScene有一个视图属性,该视图属性应该包含它所包含的SKView 的引用 。所以这只是一个这样的事情。

 class MyScene: SKScene { var someView: UIView override func didMoveToView(view: SKView) { someView = //setup view here view.addSubview(someView) } } 

然后在这个场景中,你可以随心所欲地访问你的UIKit对象。

如果您创build了一个新的Spritekit应用程序,它将已经为您所需要的设置了视图控制器。 所有你需要做的就是将视图控制器复制到你的项目,应用segue,你会很高兴与skscene一起工作。

回答你在UIKit上的问题,是的,你可以把UIKit元素放在SKScene的顶部,当然只会被skscene的一部分攻击,所以场景本身不能直接与它们交互,你需要实现某种消息传递系统,使两者可以沟通。