在目标C中,当呈现一个新的场景时,你如何去除旧的场景?

我是Objective-C的新手,所以我可能会用错误的方法来呈现这个场景,但是现在当我呈现我的新场景时,可以通过它看到旧的场景。

- (void)buttonClicked:(UIButton*)button { NSLog(@"Button %ld clicked.", (long int)[button tag]); WarScene *battle = [[WarScene alloc] initWithSize: CGSizeMake(1024,768)]; SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0]; SKView * skView = (SKView *)self.view; [skView presentScene:battle transition:reveal]; } 

有没有什么,我必须先写currentScene方法之前,去除当前的场景?

对不起,如果这是一个非常基本的问题,我已经search了一些例子,但似乎没有任何额外的代码,我错过了这意味着我可能提出的场景错误的第一位。

好消息! 你不必写任何东西来删除旧的场景。 它会被自动删除,因为Sprite Kit会为您解除所有分配。 但是,如果您需要,您可以在didMoveFromView方法中进行额外的“包装”。

现在,过去的人都报告了你正在经历的事情。 我的build议是,而不是SKScenes之间的过渡,SKViews之间的过渡提出自己的SKScene。 这样你将确保所有东西都被自动释放,保持它的所有分离。 看到这个答案 ,我想它会帮助你很多。

祝你好运!

您不需要编写任何代码来删除旧的场景。 Sprite Kit会自行完成。 但是,如果你想这样做,你可以做以下事情:

  [skView presentScene:nil]; 

另外这个stackoverflow的问题可能会进一步澄清你。