2013-12-10 1 views
4

Существует проект, над которым я работаю, в котором на экране появляется набор целей. Цели должны отображаться в определенном количестве одновременно и с некоторой задержкой между каждым появлением. Мой вопрос в том, как правильно хранить данные уровня для этой игры. Я рассматривал использование файла csv для хранения данных уровня (тип цели, местоположение, задержка и т. Д.), Но мне интересно, есть ли лучший способ сделать это. Я также подумал о создании объекта уровня для хранения информации уровня, но я не уверен. Apple говорит, что использует «Архивы узлов спрайтов», но я не могу понять, что это значит. Есть предположения?Хранение данных уровня набора Sprite

ответ

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-файлы, но они будут немного более трудно разобрать (не слишком трудно, хотя).

Что касается архивов, то Apple означает, что все классы класса Sprite поддерживают NSCoding. Это означает, что они могут быть заархивированы в файл (или объект NSData), а затем не архивированы из этого архива. Это, однако, отличается от того, что вы хотите сделать. Архивирование создало бы один «моментальный снимок» текущего состояния игры. Поэтому было бы неплохо сохранить игру, например, когда пользователь уйдет.

+0

Значит, для объекта уровня не потребуется? – Monkeyanator

+0

Спасибо, этот ответ был чрезвычайно информативным. – Monkeyanator

+0

Вопрос, когда – Monkeyanator