我有一个类似的问题,就像这个帖子中的人如何从SKScene到UIViewController?首先,我应该说我是一个完全初学者,这对我来说都是新的。
我的主菜单(第一个屏幕……
尝试:
self.view.window!.rootViewController?.dismiss(animated: false, completion: nil)
这应该忽略rootViewController之上的所有视图
编辑:
这可能对我们有用,因为我们定义了ViewController,请确保在你的Storyboard中 MenuVC 有一个标识符:
MenuVC
let storyboard = UIStoryboard(name: "Main", bundle: nil) let vc = storyboard.instantiateViewController(withIdentifier: "MenuVC") // Make sure is the same identifier as in the storyboard. vc.view.frame = (self.view?.frame)! vc.view.layoutIfNeeded() UIView.transition(with: self.view!, duration: 0.3, options: .transitionFlipFromRight, animations: { self.view?.window?.rootViewController = vc }, completion: { completed in }) }
这似乎是最好的方法,就是在另一个视图控制器中托管你的SKScene类。我建议的是创建另一个ViewStroller,例如你的SKScene SKViewController 。嵌入你的 MenuVC 在里面 navigationController 在storyBoard中单击它,单击编辑器(从顶部的菜单中)>嵌入>导航控制器。编辑你的MenuVC,这样你就可以转到SKViewController,而不是打开你的场景,然后在那里打开场景。要做到这一点,只需创建一个segue MenuVC 在故事板中,例如标识符为“MenuToSKScene”,当您想打开场景时,从您的MenuVC中执行以下操作:
SKViewController
navigationController
self.performsegue(with identifier: "MenuToSKScene", sender: self)
然后做你目前所做的一切 MenuVC 在 SKViewController 而是打开场景。
这将把你送到SKViewController,它有你的SKScene课程。然后,当您想要返回菜单时,您所要做的就是:
self.dismiss(animated: true, completion: nil)
或者从SKViewController到MenuVC创建一个带有标识符“SKSceneToMenu”的segue并调用:
self.performsegue(with identifier: "SKSceneToMenu", sender: self)
所以基本上,不要打开 SKScene 从 MenuVC ,但有一个单独的viewController SKViewController 当您想要打开场景时打开,以便您可以轻松地跳回菜单。
SKScene