Sprite Kit重新启动最后一级

时间:2014-07-25 20:37:31

标签: ios sprite-kit nsuserdefaults

我有一个游戏,其中我有不同的级别作为不同的SKScenes(LevelOne,LevelTwo等...)

当你失败关卡时,我使用presentScene:来显示Game Over菜单,这是一个SKScene,并有一个名为restart level的按钮。

我遇到的问题是我不知道如何将失败的关卡呈现为一个场景,因为我不知道如何将失败的关卡数据发送到场景中的游戏。

我提出的解决方案(因为有50多个关卡)是回到我过渡的场景,但我不知道该怎么做。

举个例子:我在8级。我失败了。

 GameOver *gameOver = [[GameOver alloc] initWithSize:self.scene.size];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:gameOver transition:transition];

我用这种方法来呈现GameOver场景。我在游戏场景中有一个名为restart的按钮,它使用选择器执行以下方法

-(void)restartLevel{

      LevelEight *newScene = [[LevelEight alloc] initWithSize:self.scene.size];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:newScene transition:transition];
}

问题是当我们在第8级失败时需要生成代码,因此我需要一种机制来发送该级别数据。

我想过使用self.scene.userData及它的objectForKey:方法,但我不知道如何将它应用于这种情况。

1 个答案:

答案 0 :(得分:0)

这里有一个可以帮到你的解决方案,通过这种方式将你的关卡编号发送到GameOver场景类:

GameOver *gameOver = [[GameOver alloc] initWithSize:self.scene.size levelNumber:currentLevelNumber];
    SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
    [self.view presentScene:gameOver transition:transition];

并在GameOver场景中写一个switch语句来检查你传递的级别号(currentLevelNumber):

switch (currentLevelNumber) {
    case 1:
        LevelOne *newScene = [[Levelone alloc] initWithSize:self.scene.size];
        SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
        [self.view presentScene:newScene transition:transition];
        break;
    case 2:
        LevelTwo *newScene = [[LevelTwo alloc] initWithSize:self.scene.size];
        SKTransition *transition = [SKTransition fadeWithColor:[UIColor whiteColor] duration:2];
        [self.view presentScene:newScene transition:transition];
        break;

kolay gelsin:)