我正在创建一个游戏,我希望它有一个可以选择级别的场景,然后让级别发挥。我只是想知道如何在用户达到该级别时创建关卡并进行保存。我想在ViewController.h中创建一个BOOL并在每个场景中调用它,即LevelCompleted = YES;然后在玩家尝试播放新关卡或重播上一级时使用该布尔值
或者,
我是否在每个场景中都有一个BOOL,然后将每个场景的头文件导入到水平导航场景中,并使用BOOL显示该关卡是否已解锁。
另外,要在应用关闭时保存BOOL的值,我是否使用NSUserDefaults?
我已经搜索了很多这方面的教程,似乎无法找到任何教程。如果需要更多信息,请告诉我。
答案 0 :(得分:2)
有几种方法可以做你想要的。我会给你一些提示和提示,以便你可以创建适合你游戏的代码。
首先请记住,MyScene是一个SKScene,默认情况下从SpriteKit项目模板中的View Controller调用。因此,您可以根据需要创建任意数量的SKScene类。每个SKScene类都可以是一个级别。
您可以将第一个SKScene,MyScene转换为主菜单,并添加级别列表供用户在此处选择。要从主菜单(MyScene)进入选定级别,您可以使用以下内容:
SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size];
SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0];
[self.view presentScene:gameLevel1 transition:reveal];
Level1将是您的第一级SKScene类的名称。还有许多很棒的过渡可供选择。您还可以根据需要添加scaleMode属性。
正如LearnCocos2D已经指出的那样,您可以使用数组或字典来存储玩家的数据,例如物品,健康状况和所达到的等级。除非您需要保存大量数据,否则NSUserDefaults是您的最佳选择。以下是有关如何使用NSUserDefaults存储数据的示例:
NSString *valueToSave = @"Level 5";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"]
[[NSUserDefaults standardUserDefaults]synchronize];
要在NSUserDefaults中读取存储值,您可以执行以下操作:
NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"];
您可以随时向NSUserDefaults写入新数据。因此,如果玩家刚刚完成一个关卡,请将其写入NSUserDefaults。