iOS7 Sprite Kit如何使用Sprite Kit重置/开始新游戏?
问题描述:
到目前为止,我一直在研究一个Sprite Kit游戏,每当我点击xCode中的“Play”按钮时就会开始一款新游戏。现在我试图在游戏中实现一个“新游戏”按钮,它将重置游戏并开始新游戏。iOS7 Sprite Kit如何使用Sprite Kit重置/开始新游戏?
我需要采取哪些步骤才能确保我的旧游戏场景不见了,并且没有任何悬挂引用?
- 我是否需要在场景中进行任何类型的手动清理? (如在旧的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];
}
}
答
ARC应该照顾清理对象创建(如+ sceneWithSize :)。我也相信,如果你正在移除整个SKScene,那么对你所有附加的节点和动作进行清理(可能在-willMoveFromView:方法中)。但是,如果您希望保留场景并重置场景子类本身内的节点和动作,则可以在场景的设置部分之前执行以下操作(在-didMoveToView方法中或者在-didMoveToView方法中)或你自己的设置方法):
[self removeAllChildren];
[self removeAllActions];
...
[self addChild:node];
etc
+0
感谢这些代码行帮助我。但由于某些原因,arc没有清理所有东西(我正在使用beta Xcode)。所以我在调用相同的SKSCENE之前使用了这些删除方法,现在一切正常。 – helloGo
最好的建议是使用仪器来验证没有任何泄漏。分析器也会提供帮助,同样可以将日志语句放在类的dealloc方法中。其他所有内容都需要使用相关代码进行调试。 – LearnCocos2D