在 GameScene 和 ViewController Swift 之间移动
Posted
技术标签:
【中文标题】在 GameScene 和 ViewController Swift 之间移动【英文标题】:Moving between GameScene and ViewController Swift 【发布时间】:2015-04-20 19:48:44 【问题描述】:我想在触摸图像时从我的 GameScene 移动到 ViewController,并在触摸 UIButton 时返回到 GameScene。 它可以从 ViewController 到 GameScene,因为它是 UIButton。
我是这样做的:
@IBAction func playbut(sender: UIButton)
var scene = GameScene(size: CGSize())
let skView = self.view as! SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
但是当我触摸 GameScene 上的图像时,我不知道要编写什么代码返回 ViewController。
我应该给 GameScene 写什么?
谢谢
【问题讨论】:
【参考方案1】:我不认为这是你应该做的......你应该使用 SKScene - 而不是 UIViewController - 作为你的导航/菜单。
但是,one post 我发现确实解释了这一点(尽管它在 Obj-C 中):
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"PurchasedVC"];
//Call on the RootViewController to present the New View Controller
[self.view.window.rootViewController presentViewController:vc animated:YES completion:nil];
Swift 版本应该是这样的(我不是专家,但语法还不错)...
var mainStoryboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
var vc = mainStoryboard.instantiateViewControllerWithIdentifier("PurchasedVC") as! UIViewController
self.view.window?.rootViewController?.presentViewController(vc, animated: true, completion: nil)
就其他答案而言:
这可能是我在这个主题上看到的最好的帖子:Presenting UIViewController from SKScene 另外,我在场景之间的过渡中找到了这个:SpriteKit how to create and transition to different scenes (Swift language)我希望这会有所帮助。我也有同样的问题,老实说,看起来我一直都做错了!
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 UIStoryboard 的名称是什么?我的故事板的名字是 Main.Storyboard。但是,如果我将 ''Main_iPhone'' 替换为 ''Main.Storyboard'' 它会给我一个错误,即找不到 Main.Storyboard。我应该在那里写什么?【参考方案2】:请使用以下内容。
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewController(withIdentifier: "MainController")
let vc2 = self?.view!.window?.rootViewController?.presentedViewController
vc2?.present(vc, animated: true, completion: nil)
使用常量
self?.view!.window?.rootViewController?.presentedViewController
我们可以派生当前游戏场景在其中运行的视图控制器。
【讨论】:
以上是关于在 GameScene 和 ViewController Swift 之间移动的主要内容,如果未能解决你的问题,请参考以下文章
Sprite Kit 场景编辑器 GameScene.sks 场景宽度和高度
从 GameViewController 访问按钮、标签和 uiimageviews 到 GameScene
Swift:使用 StoryBoards 和 UIViewControllers 在 GameScene 中满足条件后返回主菜单?