如何从 SKScene 中执行 segue?

Posted

技术标签:

【中文标题】如何从 SKScene 中执行 segue?【英文标题】:How to perform segue from within a SKScene? 【发布时间】:2013-10-02 17:04:03 【问题描述】:

我一直在尝试从 sprite kit SKScene 层中执行转场。我的应用程序要求用户触摸场景上的图像,这会推动一个新的 UIViewController。但是每次我尝试从 SKScene 游戏层中执行时,它都会给我输出没有标识符错误的 segue。我确实有一个 segue 并用标识符指定了它。

我的简单问题是,如何在运行 SKScene 游戏层的情况下进行 segue?请帮帮我。

【问题讨论】:

【参考方案1】:

Segue 属于视图控制器,而不是 SpriteKit 场景。如果您想从 SpriteKit 节点的事件处理代码中执行转场,您需要查找拥有呈现场景的视图的视图控制器。例如,在SKScene 子类'touchesBegan:withEvent: 方法中:

UIViewController *vc = self.view.window.rootViewController;
[vc performSegueWithIdentifier:@"id" sender:nil];

【讨论】:

这对我不起作用,我不得不在这里使用答案:***.com/questions/27053436/… @RachelHarvey:对不起,我的答案中的代码只是如何获得可以从中进行选择的 VC 的一个示例。你真正需要的是一个拥有场景并拥有你正在寻找的segue的视图控制器——如果你的SKScene出现在选项卡视图控制器或导航控制器内的视图控制器中,根VC可能是' t 有你的转场。【参考方案2】:

斯威夫特版本:

self.view!.window!.rootViewController!.performSegueWithIdentifier("gameOverSegue", sender: self)

【讨论】:

请在你的回答中添加一些解释!

以上是关于如何从 SKScene 中执行 segue?的主要内容,如果未能解决你的问题,请参考以下文章

如何从sks文件加载节点,然后应用在Scene Editor中定义的操作

从文件加载 SKScene 而不调用 init(fileNamed:"") 的方法

子类化使用 SpriteKit .sks 场景文件创建的 SKNode

如果使用编辑器中的场景加载,如何在 SpriteKit 中检测触摸

如何释放未使用的 SKScene

如何从 SKScene 呈现 UIAlertController