iOS7 Sprite Kit如何使用Sprite Kit重置/启动新游戏?

时间:2014-01-19 18:50:35

标签: objective-c ios7 reset sprite-kit skscene

到目前为止,我一直在使用Sprite Kit游戏,每当我点击" Play" xCode中的按钮。现在我正在努力实施"新游戏"游戏中的按钮将重置游戏并开始新游戏。

我需要采取哪些步骤才能确保我的旧游戏场景消失,并且没有任何悬空参考?

  • 我是否需要在场景中进行任何类型的手动清理? (如在旧的viewDidUnload中)或ARC会处理所有事情吗?
  • 我是否需要明确删除我可能已在场景中添加到其超级视图的任何视图控制器视图?
  • 是否有任何可以帮助我重置游戏的内置方法?

这是我到目前为止所使用的内容。

-(void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];

    //set the view only once, because this method will be called again on rotation
    if(!self.kkView.scene)
    {
        landscapeSize = self.kkView.bounds.size;

        self.kkView.showsFPS = NO;
        self.kkView.showsNodeCount = NO;
        self.kkView.showsDrawCount = NO;

        MyScene * gameScene = [MyScene sceneWithSize:landscapeSize];
        gameScene.scaleMode = SKSceneScaleModeAspectFill;

        IntroScene * scene = [IntroScene sceneWithSize:landscapeSize];
        scene.gameScene = gameScene;

        scene.scaleMode = SKSceneScaleModeAspectFill;
        [self.kkView presentScene:scene];
    }
}

1 个答案:

答案 0 :(得分:4)

ARC应该负责清理对象创建(比如+ sceneWithSize :)。我还相信,如果你要删除整个SKScene,那么为你完成所有附加节点和操作的清理工作(可能在-willMoveFromView:方法中)。

但是,如果您希望保留场景并重置场景子类本身内的节点和动作,那么您可以在场景的设置部分之前执行以下操作(在-didMoveToView:方法或您的自己的设置方法):

[self removeAllChildren];
[self removeAllActions];
...
[self addChild:node];
etc