存储精灵套件级别数据

时间:2013-12-10 17:47:43

标签: ios iphone objective-c sprite-kit

我正在开展一个项目,其中一组目标出现在屏幕上。目标应该同时出现一定量,并且每次出现之间有一定的延迟。我的问题是如何正确存储此游戏的关卡数据。我正在考虑使用csv文件来存储关卡数据(目标类型,位置,延迟等),但我想知道是否有更好的方法来实现它。我还考虑过制作一个水平对象来存储关卡信息,但我不确定。 Apple说使用'精灵节点存档',但我似乎无法找出这意味着什么。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您是否考虑过使用plist文件?这将是最容易解析的。您可以拥有一系列目标(dictionarys),然后定义位置,绝对延迟以及您想要的任何其他内容。

enter image description here

然后将其读入数组:

NSArray *targets = [NSArray arrayWithContentsOfFile:plistPath];
for (NSDictionary *dictionary in targets) {
    CGPoint position = CGPointMake([dictionary[@"positionX"] floatValue], 
                                   [dictionary[@"positionY"] floatValue]);
    float delay = [dictionary[@"time"] floatValue];
    // Do something with this information, maybe create a Target instance etc.
}

你也可以对CSV文件做同样的事情,但是解析它们会有点困难(虽然不是很难)。

关于档案,Apple的意思是所有Sprite Kit类都支持NSCoding。这意味着它们可以存档到文件(或NSData对象)中,然后从该存档中取消存档。然而,这与您想要做的不同。归档将创建游戏当前状态的单个“快照”。因此,例如在用户离开时保存游戏会很不错。