我正在开发的项目中有一组目标出现在屏幕上。这些目标应该以相同的数量同时出现,并且每次出现之间应该有一定的延迟。我的问题是如何正确地存储此游戏的级别数据。我考虑使用CSV文件来存储级别数据(目标类型,位置,延迟等),但我想知道是否有更好的方法。我也考虑过创建一个级别对象来存储级别信息,但我不确定。苹果建议使用“精灵节点归档”,但我似乎找不到这是什么意思。有什么想法吗?
你是否考虑使用plist文件?这是最容易解析的方式。你可以有一个目标数组(字典),然后定义位置、绝对延迟和其他任何你想要的内容。
然后只需将其读入数组中:
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文件来执行相同的操作,但是解析起来可能会有些困难(不过也不是太难)。
关于归档,苹果指的是所有Sprite Kit类都支持NSCoding。这意味着它们可以被归档到一个文件(或NSData对象)中,并且稍后可以从该存档中取消归档。然而,这与您想要做的不同。归档将创建当前游戏状态的单个“快照”。因此,当用户离开时,这将很好地保存游戏。