如何将ViewController添加到SKScene

时间:2016-12-04 04:15:35

标签: swift uiviewcontroller sprite-kit swift3

我的SpriteKit游戏中有以下视图控制器:

SKScene

我尝试在 override init(size: CGSize){ super.init(size: size) weak var myViewController: MyViewController! myViewController = MyViewController(frame: self.frame) self.view?.addSubview(myViewController) }

中按以下方式初始化它
"incorrect argument label in call (have 'frame:', expected 'coder:')"

上面给了我以下错误:

"cannot convert type of 'MyViewController!' to expected argument type 'UIView'"

SKScene

我想我做错了什么。如何将我的视图控制器添加到UICollectionView

更新

我正在尝试使用SKScene为我的游戏制作菜单,这就是为什么我尝试将上面的视图控制器(现在显示完整的MenuViewController代码)添加到我的SKView。但现在我知道我应该将它添加到我的SKView中。我相信此观点可以添加到SKScene课程import SpriteKit import GameplayKit import UIKit class GameScene: SKScene { private var label : SKLabelNode? private var spinnyNode : SKShapeNode? override func didMove(to view: SKView) { } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { if let label = self.label { label.run(SKAction.init(named: "Pulse")!, withKey: "fadeInOut") } } override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { } override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { } override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) { } override func update(_ currentTime: TimeInterval) { // Called before each frame is rendered } } 中(下方)。怎么办呢?

g_source_new()

2 个答案:

答案 0 :(得分:1)

答案对于评论来说太长了,但就此问题而言:incorrect argument label in call (have 'frame:', expected 'coder:')是因为您正在创建新的MyViewController对象并使用参数标签{{1}初始化它无论你是否将它作为你的课程的初始化者都是问题。

我们需要查看您的frame类以及您已设置的初始值设定项,因为您的类似乎只有1个初始化程序,而且似乎是MyViewController。 请告诉我们您的init(coder: NSCoder)课程。

答案 1 :(得分:-2)

简单的答案是你不能。 SpriteKit和UIKit是两种不同的动物,它们只通过SKView连接在一起。