到目前为止,我一直在使用Sprite Kit游戏,每当我点击" Play" xCode中的按钮。现在我正在努力实施"新游戏"游戏中的按钮将重置游戏并开始新游戏。
我需要采取哪些步骤才能确保我的旧游戏场景消失,并且没有任何悬空参考?
这是我到目前为止所使用的内容。
-(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];
}
}
答案 0 :(得分:4)
ARC应该负责清理对象创建(比如+ sceneWithSize :)。我还相信,如果你要删除整个SKScene,那么为你完成所有附加节点和操作的清理工作(可能在-willMoveFromView:方法中)。
但是,如果您希望保留场景并重置场景子类本身内的节点和动作,那么您可以在场景的设置部分之前执行以下操作(在-didMoveToView:方法或您的自己的设置方法):
[self removeAllChildren];
[self removeAllActions];
...
[self addChild:node];
etc