ios - iOS Spritekit 游戏中的肌酐水平

标签 ios objective-c sprite-kit

我正在创建一个游戏,我希望它有一个可以选择关卡的场景,然后可以玩这些关卡。我只是想知道当用户达到该级别时如何着手创建级别和保存。我想在 ViewController.h 中创建一个 BOOL 并在每个场景中调用它,即 LevelCompleted = YES;然后在玩家尝试玩新关卡或重玩之前的关卡时使用该 bool 值

或者,

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

此外,要在应用关闭时保存 BOOL 的值,我是否使用 NSUserDefaults?

我已经搜索了很多关于这方面的教程,但似乎找不到任何内容。如果需要更多信息,请告诉我。

最佳答案

有几种方法可以做你想做的事。我会给您一些技巧和提示,以便您可以创建适合您的游戏的代码。

首先请记住,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。

关于ios - iOS Spritekit 游戏中的肌酐水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23312465/

相关文章:

ios - 重叠装载机圆

ios - 让 MobileVLCKit 通过 Cocoapods 工作

ios - 如何使用 iOS 7 SpriteKit Particle 向不是游戏的 iOS App 添加粒子效果?

快速计算操纵杆旋转度数

ios - 如何在不写代码的情况下在iOS模拟器中设置位置?

ios - 应用程序在 iPhone 上运行良好; iPad模拟器只给出黑屏

ios - 如何在不使用 UINavigationController 的情况下以编程方式进入 rootViewController

ios - 使用 willDisplay cell 方法向上滚动 tableView 时,如何从 API 获取数据并更新单元格和部分?

ios7 - SpriteNode 不遵循 cgpath

objective-c - Xcode 12,如何在整个项目中抑制 "Double-quoted include in framework header"警告