将 SKScene 添加到 UIViewController?
Posted
技术标签:
【中文标题】将 SKScene 添加到 UIViewController?【英文标题】:Adding an SKScene to a 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
访问吗?
【问题讨论】:
这里可以参考我的教程博客:xcodenoobies.blogspot.com/2016/11/… 【参考方案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 所在的视图,因此场景本身不能直接与它们交互,您需要实现某种消息传递系统,以便两者能够通信。
【讨论】:
以上是关于将 SKScene 添加到 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章
SpriteKit SKScene 添加 AVCaptureVideoPreviewLayer CALayer 作为背景不起作用