当我完成我的SKScene时,有没有办法从我的SKScene类中剔除SKScene?
如果不在我的视图控制器中显示我的SKScene [skView presentScene:theScene];,那么是否有办法重新启动场景或从我的SKView中删除?
SKScene Class Reference和SKView Class Reference 是没有帮助的。
更新:
下面的代码从我的SKView [yourSKView presentScene:nil];中删除了我的场景,但是当我回到我的视图控制器中时,场景仍然在后台运行。我总是可以暂停它,当游戏结束,我被送回我的视图控制器(菜单),但我想知道是否还有其他方法,然后暂停它,就像完全删除它?
-(void)endTheGame {
[highscoreLabel removeFromSuperview];
NSLog(@"Game Over");
//would like to end here before calling the below method in my view controller
[self.delegate mySceneDidFinish:self];
}发布于 2014-08-11 18:16:08
“您不能从场景中”返回到视图控制器“。场景是视图,视图控制器控制和显示视图。使用视图控制器更改视图。记住视图控制器本身不是视图。”-Wharbio。
这里最好的解决方案是创建另一个视图控制器。这个视图控制器将是我的菜单。然后,另一个视图控制器将充当淫秽场景的主机。
在我的情况下,我使用我的菜单视图控制器来取消在skview中显示的视图控制器。
发布于 2014-12-12 05:53:29
遇到了一个类似的问题,我无意中回答了你的问题,既然没有人给出一个像样的答案,下面就是我是如何解决这个问题的:
自removeFromParent;self.view当前self :0;
下面是我的Swift代码,即使您使用的是目标C,您也会了解它的作用;关键的一行是"if skView.scene == nil“测试:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
let skView = self.view as SKView
if skView.scene == nil {
let scene = GameScene(size:skView.bounds.size)
scene.controller = self
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
}发布于 2014-02-20 22:02:36
您可以使用:
[yourSKView presentScene:nil];移除现场。
https://stackoverflow.com/questions/21920308
复制相似问题