将 SKScene 添加到 UIViewController?

Adding an SKScene to a UIViewController?

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

还有一个旁注……

如果 SKScene 占据了整个 UIViewController.view,您可以在场景顶部叠加 UIKit 对象吗?

或者最好在 UIViewController.view 中创建一个单独的 UIView 来容纳 SKScene,然后在这个单独的 [=17= 周围布置 UIKit 对象],让默认的 UIViewController.view 充当所有这些元素的容器?如果采用这种方式,理论上这些UIKit个对象能被SKScene访问吗?

如果您创建一个新的 Spritekit 应用程序,它会根据您的需要设置好视图控制器。您需要做的就是将该视图控制器复制到您的项目中,应用 segue,然后您就可以开始使用 skscene。

回答你关于 UIKit 的问题,是的,你可以将 UIKit 元素放在 SKScene 之上,它当然只会被攻击到 skscene 所属的视图,所以场景本身不能直接与之交互他们,您需要实施某种消息传递系统,以便两者可以通信。

  1. 将 SKView 添加到您的 viewController。
  2. 将 SKScene 添加到您的 SKView。

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

SKScene has a view property that should hold a reference 到它包含的 SKView。所以这只是做这样的事情的问题。

class MyScene: SKScene {
    var someView: UIView

    override func didMoveToView(view: SKView) {
        someView = //setup view here
        view.addSubview(someView)
    }
}

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