我刚刚在界面构建器中创建了一个新的UIViewController
。它来自UITableViewController
(单元格)。我现在想在SKScene
内使用UIViewController
。这是如何完成的?
并注意旁白......
如果SKScene
占用整个UIViewController.view
,您可以在场景顶部覆盖UIKit
个对象吗?
或者最好在UIView
内创建一个单独的UIViewController.view
来保存SKScene
,然后围绕这个单独的UIKit
布置UIView
个对象,让默认UIViewController.view
充当所有这些元素的容器?如果采用这种方法,从理论上讲,UIKit
可以访问这些SKScene
个对象吗?
答案 0 :(得分:2)
您可以在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对象。
答案 1 :(得分:1)
如果您创建一个新的Spritekit应用程序,它将根据您的需要设置视图控制器。您需要做的就是将该视图控制器复制到您的项目中,应用segue,您最好使用skscene。
回答关于UIKit的问题,是的,你可以将UIKit元素放在SKScene之上,它当然只会受到skscene所属视图的攻击,所以场景本身不能直接与它们交互,你需要实现某种消息系统,这样两者才能进行通信。