首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何辞退SKScene?

如何辞退SKScene?
EN

Stack Overflow用户
提问于 2014-02-20 21:46:20
回答 7查看 15.8K关注 0票数 16

当我完成我的SKScene时,有没有办法从我的SKScene类中剔除SKScene?

如果不在我的视图控制器中显示我的SKScene [skView presentScene:theScene];,那么是否有办法重新启动场景或从我的SKView中删除?

SKScene Class ReferenceSKView Class Reference 是没有帮助的。

更新:

下面的代码从我的SKView [yourSKView presentScene:nil];中删除了我的场景,但是当我回到我的视图控制器中时,场景仍然在后台运行。我总是可以暂停它,当游戏结束,我被送回我的视图控制器(菜单),但我想知道是否还有其他方法,然后暂停它,就像完全删除它?

代码语言:javascript
复制
-(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];
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-08-11 18:16:08

“您不能从场景中”返回到视图控制器“。场景是视图,视图控制器控制和显示视图。使用视图控制器更改视图。记住视图控制器本身不是视图。”-Wharbio。

这里最好的解决方案是创建另一个视图控制器。这个视图控制器将是我的菜单。然后,另一个视图控制器将充当淫秽场景的主机。

在我的情况下,我使用我的菜单视图控制器来取消在skview中显示的视图控制器。

票数 4
EN

Stack Overflow用户

发布于 2014-12-12 05:53:29

遇到了一个类似的问题,我无意中回答了你的问题,既然没有人给出一个像样的答案,下面就是我是如何解决这个问题的:

  1. 在我的场景中,我调用了两条线

自removeFromParent;self.view当前self :0;

  1. 在我的控制器(显示SKScene的控制器)中,我更改了苹果的模板代码,该代码是从viewDidLoad创建和呈现场景的,以便在viewWillAppear中创建和呈现场景,只有当视图的场景为零时

下面是我的Swift代码,即使您使用的是目标C,您也会了解它的作用;关键的一行是"if skView.scene == nil“测试:

代码语言:javascript
复制
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)
    }
}
票数 13
EN

Stack Overflow用户

发布于 2014-02-20 22:02:36

您可以使用:

代码语言:javascript
复制
 [yourSKView presentScene:nil];

移除现场。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21920308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档