4Ge*_*lOf 14 ios ios7 sprite-kit skview skscene
当我完成我的SKScene时,有没有办法从我的SKScene课程中解雇SKScene?
如果没有回到我的ViewController,我提出我的SKScene [skView presentScene:theScene];有没有办法重新启动场景或从我的SKView中删除?
该SKScene类参考和SKView类参考都没有帮助.
更新:
以下代码从我的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];
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 12
遇到类似的问题后,我偶然发现了你的问题,因为没有人在这里给出了正确的答案,我是如何解决它的:
Run Code Online (Sandbox Code Playgroud)[self removeFromParent]; [self.view presentScene:nil];
这是我的Swift代码,即使你使用的是Objective 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)
}
}
Run Code Online (Sandbox Code Playgroud)
“你不能从场景“返回视图控制器”。场景是一个视图,视图控制器控制和显示视图。使用视图控制器来更改视图。记住视图控制器本身不是视图。” -沃比奥
这里最好的解决方案是创建另一个视图控制器。这个视图控制器将是我的菜单。然后另一个视图控制器将充当 skscene 的主机。
在我的情况下,我然后使用菜单视图控制器来关闭 skview 中显示的视图控制器。