将SKScene添加到UIViewController?

时间:2015-10-15 19:08:17

标签: ios swift uiviewcontroller sprite-kit skscene

我刚刚在界面构建器中创建了一个新的UIViewController。它来自UITableViewController(单元格)。我现在想在SKScene内使用UIViewController。这是如何完成的?

并注意旁白......

如果SKScene占用整个UIViewController.view,您可以在场景顶部覆盖UIKit个对象吗?

或者最好在UIView内创建一个单独的UIViewController.view来保存SKScene,然后围绕这个单独的UIKit布置UIView个对象,让默认UIViewController.view充当所有这些元素的容器?如果采用这种方法,从理论上讲,UIKit可以访问这些SKScene个对象吗?

2 个答案:

答案 0 :(得分:2)

  1. 将SKView添加到viewController。
  2. 将SKScene添加到您的SKView。
  3. 您可以在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所属视图的攻击,所以场景本身不能直接与它们交互,你需要实现某种消息系统,这样两者才能进行通信。