4

我有两个不同的视图控制器,SKScene第一个是一个。在那里我们找到了游戏本身,在第二个中找到了带有“重播”按钮的分数。游戏结束后,我删除场景,当用户单击“重播”时,我alloc再次init删除场景。我的问题是,如果某个SKSpriteNode在游戏结束时旋转了,在删除它并重置它之后,当我回到那个场景时,它仍然以与删除场景之前完全相同的角度旋转。被-initWithSize正确调用,所以我不确定为什么会发生这种情况。我的问题是是否有办法重置SKScene它,使其与第一次玩游戏时相同。谢谢!

4

1 回答 1

4

是的,首先创建一个创建场景并调用它的方法。如果您有属于属性的对象,请在调用场景创建方法之前将它们从父对象中删除。

例子:

-(id)initWithSize:(CGSize)size {
    [super initWithSize:size];
    [self startNewGame];
    return self;
}

-(void)startNewGame {
//all your scene configs here
}

-(void)buttonThatsCalledOnRestartClick {
   [self startNewGame];
}

您在同一个位置看到您的精灵的原因是因为您在重新启动时没有将其从场景中移除。由于您可能应该完全重建您的场景,您应该从场景中删除所有对象,然后再次调用您的“startNewGame”方法。

从场景中移除所有对象的示例:

for (SKNode* node in self.children) {
    [node removeFromParent];
}
于 2014-04-21T20:25:33.070 回答