在SpriteKit中重置场景

时间:2014-04-21 20:11:00

标签: ios objective-c initialization sprite-kit skscene

我有两个不同的视图控制器,第一个视图控制器SKScene。在那里我们找到了游戏本身,在第二个游戏中找到了“重播”按钮。当游戏结束时,我会删除该场景,当用户点击“重播”时,我会再次allocinit。我的问题是,如果在游戏结束时旋转了某个SKSpriteNode,在删除它并重新设置之后,当我返回到该场景时,它将以与删除场景之前完全相同的角度旋转。 -initWithSize被正确调用,所以我不确定为什么会这样。我的问题是,是否有一种方法可以重置SKScene,以便它与第一次玩游戏时相同。谢谢!

1 个答案:

答案 0 :(得分: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];
}