2013-12-10 5 views
0

동적으로 생성 된 수십 개의 미니 레벨이있는 ​​게임을 만들고 있습니다. 단순화하기 위해, A, B, C의 세 가지 유형이 있으며 각각은 정수 난이도를 가질 수 있다고 가정 해 봅시다. LevelA, LevelB 및 LevelC는 CCLayer의 하위 클래스이며 한 번에 하나씩 CCScene의 하위 클래스 인 GameScene에로드했습니다. 나는이 방법에 결혼하지 않았다. 그것은 단지 일하고있는 것입니다.동기식 CCLayers - 복잡한 정의 된 순서로 실행중인 레벨

내가 알 수없는 것은 전반적인 방식으로 레벨의 흐름을 제어하는 ​​방법입니다.

새로운 레벨을로드하는 간단한 방법은 처럼 [[CCDirector sharedDirector] replaceScene:[newScene node]] 모델을 복제하는 것 같습니다.

다음 수준으로의 호출이 현재 수준의 코드 내에있는 경우에만 작동합니다.

-(void)checkScore { 
    if (score >= 10) { 
     [[GameScene sharedScene] replaceGameplayLayer:[LevelB newLevelWithDifficulty:currentLevelDifficulty]]; 
    } 
} 

그리고 C를로드 할 LevelB 클래스에서 동일한 작업을 수행 : 같은 것을 - 내가 A-수준에있어 경우에 따라서, 나는 해당하는 B-레벨 I 10 점을 누를 때마다를로드 할 수 있습니다 - 레벨, 또는 다른 구성.

하지만 레벨 주문을 계획하고 싶다면 어떻게해야합니까? A1, B1, C1, C2, C3, C4, C5, A2 등? 나는 각 레벨을 함수의 동기식 라인으로 취급하고 싶습니다. 좋아요 :

-(void)playGame { 
    [LevelA newLevelWithDifficulty:1]; 
    [LevelB newLevelWithDifficulty:1]; 
    for (int i = 0; i < 5; i++) { 
     [LevelC newLevelWithDifficulty:i]; 
    } 
    // ...etc... 
} 

나는 어떻게 문제를 해결할 수 있을지 모르겠다. 심지어 가능할까요? checkScore 메서드가 현재 레벨을 10 포인트 만 죽일 정도로 쉽지만 LevelB가 발생할 때까지 어떻게 유지합니까?

이 질문에 대한 답변을 드리겠습니다. 당신이 제공 할 수있는 모든 도움을 주시면 감사하겠습니다.

답변

0

장면에서 적절한 순서로 레벨 배열을 만들 수 있지만 모든 시간을 미리 작성하는 것은 비용이 많이 듭니다 (텍스처 등). 따라서 수준과 난이함을 고유하게 식별하는 핵심 시스템을 고안하십시오. 다음으로 씬이 알림을 등록 할 수 있습니다 (NSNotificationCenter 및 NSNotification에서 읽음). 각 레벨은 알림을 게시하여 완료를 알릴 수 있습니다. 여러 통지 (예 : levelComplete, gameOver 및 gameVictory)를 가질 수 있습니다. 장면이 levelComplete 통지를 받으면

, 당신은 그것을 추가, 클래스의 인스턴스를 실체화, 다음 단계의 정보를 조회, 레이어를 페이드 아웃, 그리고 그것을 페이드 수 있습니다. ... 단지

그런 일을하는 한 가지 방법. 기타 이용 가능.

클래스 이름, 재생할 음악, 승리 및 gamover 조건 등을 포함하는 수준 설명자 plists가 있습니다. 장면 전환없이 레벨을 시퀀싱하려면이 같은 스키마를 사용하십시오. 나를 위해 일합니다. ymmv :)

+0

고마워! 시퀀스를 끝까지 작성하면 작업을 수행하는 것 같습니다. 위의 for 루프와 같이 수준의 순서를 스크립팅하는 것이 좋겠지 만 가능하지 않다면 그것 없이도 살 수 있습니다. – arthurlewis

+0

yah ... 내 게임을위한 스크립팅 프레임 워크를 주로 스릴을 위해 만듭니다. Kobold는 LUA 스크립팅 언어에 대한 내장 기능을 갖추고 있으며 cocos2d의 일부 버전을 기반으로합니다. 여기를보십시오 http://www.kobold2d.com/display/KKSITE/Home – YvesLeBorg

+0

사실, 구현하려고하고 있습니다. 일부 경우에는 레벨 순서를 동적으로 생성해야하기 때문에 시퀀스를 쓰는 것은 옵션이 아닙니다. 그렇다면 "적절한 순서로 레벨 배열을 만드는 것"은 무엇을 의미합니까?레벨은 거의 동일하므로 거의 모든 애셋을 공유하므로 너무 많은 텍스처를로드하는 것에 대해 걱정하지 않습니다. 배열을 동적으로 채울 수는 있지만 실제로 무엇이 포함되는지는 잘 모르겠습니다. 선택자? – arthurlewis