我有一个游戏,其中我有不同的级别作为不同的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:方法,但我不知道如何将它应用于这种情况。
答案 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:)