在iOS Sprite Kit游戏中创build关卡

我正在创build一个游戏,我希望它有一个select水平的场景,然后有水平发挥。 我只是想知道如何去创build关卡和保存当用户已经达到这个水平。 我想在ViewController.h中创build一个BOOL,并在每个场景中调用它,例如LevelCompleted = YES; 然后在玩家尝试播放一个新的关卡或者重播之前的关卡时使用这个布尔

要么,

在每个场景中是否有BOOL,然后将每个场景的头文件导入到级别导航场景中,并使用BOOL来显示级别是否已解锁。

另外,为了在应用程序closures时保存BOOL的值,我使用NSUserDefaults吗?

我已经search了很多关于这个教程,似乎无法find任何。 如果需要更多的信息,请让我知道。

有几种方法可以做你想做的事情。 我会给你一些提示和提示,所以你可以创build适合你的游戏的代码。

首先要记住的是,MyScene是一个SKScene,在SpriteKit项目模板中默认从视图控制器调用。 因此,您可以创build任意数量的SKScene类,只要您想拥有这些级别即可。 每个SKScene类可以是一个级别。

您可以将您的第一个SKScene,MyScene,到您的主菜单,并添加用户级别列表在这里select。 要从主菜单(MyScene)到达选定的级别,您可以使用如下所示:

SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size]; SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0]; [self.view presentScene:gameLevel1 transition:reveal]; 

Level1将是您的第一个级别的SKScene类的名称。 也有一些伟大的过渡select。 您也可以根据需要包含一个scaleMode属性。

正如LearnCocos2D已经指出的那样,您可以使用数组或字典来存储玩家的数据,例如物品,健康状态和等级。 除非您需要保存大量的数据,否则NSUserDefaults是您的最佳select。 这里是一个关于如何用NSUserDefaults存储数据的例子:

 NSString *valueToSave = @"Level 5"; [[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"] [[NSUserDefaults standardUserDefaults]synchronize]; 

要读取NSUserDefaults中存储的值,可以这样做:

 NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"]; 

您可以随时将新数据写入NSUserDefaults。 所以如果玩家刚刚完成一个级别,写入NSUserDefaults。