您好,当从 GameScene
中的游戏中单击标签返回到 mainMenu
时,我正在尝试执行转场,MainMenu
是在 Storyboard 中创建,并且从 GameScene 到 MainMenu 的 Segue 设置为 gameToMain。我目前必须完成此任务的代码是:
在 GameSceneViewController 中我的代码是
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scene = GameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = false
scene.scaleMode = .AspectFill
skView.presentScene(GameScene(size: skView.bounds.size))
scene.viewController = self
}
并在我的 GameScene 中添加
var viewController: UIViewController?
和
func segue(){
self.viewController!.performSegueWithIdentifier("gameToMain", sender: viewController)
}
我在解包可选值时收到错误 fatal error :意外发现 nil
。
我相信问题出在发件人身上,我已经设置了一个 mainMenuViewController
但我不确定如何解决该问题。谢谢!
最佳答案
问题似乎是您没有设置 viewController
因为您收到此错误...
fatal error :意外发现 nil
当您创建 GameScene
时,我猜测您没有正确设置 viewController 变量。由于您提供的代码有限,很难确定,但我会先看看那里。如果这不是问题,我会更新您关于如何创建游戏场景以及何时创建的问题。
您还可以在调用 segue 之前注销 View Controller ,以验证它是否为 nil。
编辑
获得附加代码后,我相信您的问题就在这里......
skView.presentScene(GameScene(size: skView.bounds.size))
您正在创建一个全新的场景,而不是使用上面创建的场景。应该是这个...
skView.presentScene(scene)
此外,如果您想返回到之前的 viewController,则在此示例中您不会调用 segue,它会是这样的..
viewController.dismissViewControllerAnimated(true, completion: nil)
希望有帮助。
关于ios - 执行从 GameScene 到主菜单的 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162014/