【问题标题】:Adding an SKScene to a UIViewController?将 SKScene 添加到 UIViewController?
【发布时间】:2015-10-15 19:08:16
【问题描述】:
我刚刚在界面生成器中创建了一个新的UIViewController。它与UITableViewController(单元格)相连。我现在想在这个UIViewController 中使用SKScene。这是如何实现的?
顺便说一句……
如果SKScene 占据了整个UIViewController.view,您可以在场景顶部覆盖UIKit 对象吗?
或者最好在UIViewController.view 内部创建一个单独的UIView 来保存SKScene,然后围绕这个单独的UIView 布局UIKit 对象,并让默认的UIViewController.view 充当所有这些元素的容器?如果采用这种方式,理论上讲这些UIKit对象可以被SKScene访问吗?
【问题讨论】:
标签:
ios
swift
uiviewcontroller
sprite-kit
skscene
【解决方案1】:
- 将 SKView 添加到您的 viewController。
- 将 SKScene 添加到您的 SKView。
您可以从您的 SKScene 中覆盖 UIKit 项目。这就是我在游戏中使用集合和表格视图的方式。但是,它们需要作为子视图添加到持有您的 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 对象。
【解决方案2】:
如果您创建一个新的 Spritekit 应用程序,它会根据您的需要设置视图控制器。您需要做的就是将该视图控制器复制到您的项目中,应用 segue,然后您就可以很好地使用 skscene。
回答你关于 UIKit 的问题,是的,你可以将 UIKit 元素放在 SKScene 之上,当然它只会被攻击到 skscene 所在的视图,因此场景本身不能直接与它们交互,您需要实现某种消息传递系统,以便两者能够通信。