存储Sprite Kit关卡数据

4
我正在开发的项目中有一组目标出现在屏幕上。这些目标应该以相同的数量同时出现,并且每次出现之间应该有一定的延迟。我的问题是如何正确地存储此游戏的级别数据。我考虑使用CSV文件来存储级别数据(目标类型,位置,延迟等),但我想知道是否有更好的方法。我也考虑过创建一个级别对象来存储级别信息,但我不确定。苹果建议使用“精灵节点归档”,但我似乎找不到这是什么意思。有什么想法吗?
1个回答

5

你是否考虑使用plist文件?这是最容易解析的方式。你可以有一个目标数组(字典),然后定义位置、绝对延迟和其他任何你想要的内容。

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文件来执行相同的操作,但是解析起来可能会有些困难(不过也不是太难)。

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


那么就不需要一个等级对象了吗? - Monkeyanator
只是一个问题,当... - Monkeyanator
嗨@DrummerB,感谢您的回答。我刚刚发布了一个关于如何在Swift中存储和加载瓦片地图的问题。我不确定是否可以使用plist文件来完成这个任务。http://stackoverflow.com/questions/25022374/how-to-edit-and-load-tile-maps-in-swift 请看一下! - lisovaccaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接