2014-04-26 3 views
6

게임을 만들고 있는데 레벨을 선택하고 재생할 레벨이있는 ​​장면을 만들고 싶습니다. 나는 레벨을 생성하고 사용자가 그 레벨에 도달했을 때 절약하는 방법에 대해 궁금한 점이 많았다. 나는 ViewController.h에 BOOL을 만들고 각 장면에서 호출 할 생각이었습니다. 즉, LevelCompleted = YES; 다음 플레이어가 새로운 수준을 재생하려고 할 때이 BOOL을 사용하거나iOS Sprite Kit 게임에서 레벨 만들기

또는

내가 각 장면에서 BOOL이 있습니까 이전 수준을 재생, 다음 레벨 탐색 장면에 각 장면의 헤더 파일을 가져 , BOOL을 사용하여 레벨이 잠금 해제되었는지 여부를 표시하십시오.

또한 응용 프로그램을 닫을 때 BOOL 값을 저장하려면 NSUserDefaults를 사용합니까?

나는 이것에 대한 자습서를 많이 검색했기 때문에 찾을 수없는 것 같습니다. 더 많은 정보가 필요하시면 알려주십시오.

+0

완전히 뒤죽박죽입니까? 가능한 해결책을 시도해 보셨습니까? – sangony

+0

@sangony가 완전히 엉망진창이었습니다. 나는 그걸로 놀아 보려고했지만 아무 것도 작동하지 않는 것처럼 보입니다. 다르게 접근해야합니까? BOOL을 사용하는 것은 잘못된 것입니까? – user3576196

+0

시도한 것을 보여주고 예상대로 작동하지 않는 이유를 설명하면 더 나은 답변을 얻을 수 있습니다. –

답변

2

원하는 작업을 수행하는 데는 몇 가지 방법이 있습니다. 게임에 적합한 코드를 만들 수 있도록 몇 가지 팁과 힌트를 제공 할 것입니다.

먼저 MyScene은 SpriteKit 프로젝트 템플릿의 View Controller에서 기본적으로 호출되는 SKScene이라는 점을 기억하십시오. 따라서 레벨을 원하는만큼 많은 SKScene 수업을 만들 수 있습니다. 각 SKScene 클래스는 하나의 레벨이 될 수 있습니다.

첫 번째 SKScene MyScene을 기본 메뉴로 전환하고 여기에서 선택할 수있는 사용자 목록을 추가 할 수 있습니다. 메인 메뉴 (MyScene)에서 선택한 수준에 도달하기 위해이 같은 것을 사용할 수 있습니다

SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size]; 
SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0]; 
[self.view presentScene:gameLevel1 transition:reveal]; 

레벨 1은 첫 번째 수준에 대한 SKScene 클래스의 이름이됩니다. 선택할 수있는 많은 전환점이 있습니다. 또한 필요에 따라 scaleMode 속성을 포함 할 수 있습니다.

LearnCocos2D가 이미 지적했듯이 배열이나 사전을 사용하여 항목, 상태 및 달성 된 레벨과 같은 플레이어의 데이터를 저장할 수 있습니다. 많은 양의 데이터를 저장해야하는 경우가 아니면 NSUserDefaults가 가장 좋습니다. 여기에 NSUserDefaults에 데이터를 저장하는 방법에 대한 예는 다음과 같습니다

NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"]; 

당신은 어떤 시간에 NSUserDefaults에 새로운 데이터를 기록 할 수 있습니다 :

NSString *valueToSave = @"Level 5"; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"] 
[[NSUserDefaults standardUserDefaults]synchronize]; 

당신이 할 수 NSUserDefaults에 저장된 값을 읽을 수 있습니다. 따라서 플레이어가 방금 레벨을 끝내면 NSUserDefaults에 레벨을 기록하십시오.

+0

안녕하십니까. 해피 코딩! – sangony

+0

@sangony 레벨 사이에 NSNotification을 사용하여 새로운 레벨에 도달했다는 것을 알 수 있습니다. (내 레벨 시스템 만) –

+0

정말 게임 논리 설정 방법에 달려 있습니다. 나는 보통 레벨이 끝날 때 플레이어가 출구에 도달했거나 레벨이 완료되었다는 신호를 보내는 다른 목표를 수행합니다. 나는 당신이 NSNotification을 사용할 수 있다고 생각하지만, 내 의견으로는 당신이 정말로 필요로하는 것보다 조금 더 복잡해질 것이다. 그러나 다시 말하지만, 모두 여러분의 코드에 달려 있습니다. – sangony

관련 문제