2013-12-10 2 views
4

대상이 화면에 표시되는 프로젝트가 있습니다. 대상은 동시에 일정 금액 표시되어야하며 각 모양 사이에 일정한 지연이 있어야합니다. 제 질문은이 게임의 레벨 데이터를 올바르게 저장하는 방법입니다. 레벨 데이터 (대상 유형, 위치, 지연 등)를 저장하기 위해 CSV 파일을 사용하는 것을 고려하고 있었지만 더 나은 방법이 있는지 궁금합니다. 또한 수준 정보를 저장하기위한 수준 개체를 만드는 것을 고려했지만 확실하지 않습니다. 애플은 '스프라이트 노드의 기록 보관소'를 사용하라고 말하고 있지만 그게 무슨 뜻인지는 알 수 없습니다. 이견있는 사람?스프라이트 키트 레벨 데이터 저장

답변

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 Kit 클래스가 NSCoding을 지원한다는 것입니다. 즉, 파일 (또는 NSData 객체)에 보관하고 나중에 해당 아카이브에서 아카이브 해제 할 수 있음을 의미합니다. 그러나 이것은 당신이하고 싶은 것과는 다릅니다. 보관은 현재 게임 상태의 단일 "스냅 샷"을 만듭니다. 예를 들어 사용자가 떠날 때 게임을 저장하는 것이 좋을 것입니다.

+0

그래서 Level 객체가 필요하지 않습니까? – Monkeyanator

+0

고맙습니다.이 답변은 매우 유익했습니다. – Monkeyanator

+0

그냥 질문 언제 때 – Monkeyanator