use*_*196 6 objective-c ios sprite-kit
我正在创建一个游戏,我希望它有一个可以选择级别的场景,然后有级别可以玩.我只是想知道如何在用户达到该级别时创建关卡并进行保存.我想在ViewController.h中创建一个BOOL并在每个场景中调用它,即LevelCompleted = YES; 然后在玩家尝试播放新关卡或重播之前关卡时使用该布尔值
要么,
我是否在每个场景中都有一个BOOL,然后将每个场景的头文件导入到水平导航场景中,并使用BOOL显示该级别是否已解锁.
另外,要在关闭应用程序时保存BOOL的值,我是否使用NSUserDefaults?
我已经搜索了很多这方面的教程,似乎找不到任何东西.如果需要更多信息,请告诉我.
有几种方法可以做你想做的事。我将为您提供一些技巧和提示,以便您可以创建适合您的游戏的代码。
首先记住,MyScene 是一个 SKScene,默认情况下从 SpriteKit 项目模板中的视图控制器调用。因此,您可以根据需要创建任意数量的 SKScene 类。每个 SKScene 类可以是一个级别。
您可以将您的第一个 SKScene MyScene 放入主菜单中,并添加级别列表供用户在此处选择。要从主菜单 (MyScene) 进入选定的级别,您可以使用如下内容:
SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size];
SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0];
[self.view presentScene:gameLevel1 transition:reveal];
Run Code Online (Sandbox Code Playgroud)
Level1 将是您的第一个级别的 SKScene 类的名称。还有许多很棒的过渡可供选择。您还可以根据需要包含scaleMode 属性。
正如 LearnCocos2D 已经指出的那样,您可以使用数组或字典来存储玩家的数据,例如物品、生命值和达到的级别。除非您需要保存大量数据,否则 NSUserDefaults 是您的最佳选择。以下是如何使用 NSUserDefaults 存储数据的示例:
NSString *valueToSave = @"Level 5";
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"]
[[NSUserDefaults standardUserDefaults]synchronize];
Run Code Online (Sandbox Code Playgroud)
要读取 NSUserDefaults 中存储的值,您可以执行以下操作:
NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"];
Run Code Online (Sandbox Code Playgroud)
您可以随时将新数据写入 NSUserDefaults。因此,如果玩家刚刚完成一个关卡,请将其写入 NSUserDefaults。
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |