2012-07-27 3 views
0

나는 간단한 게임, 브레이크 아웃 클론을 가지고있다. 게임 플레이 레이어, 메뉴 레이어가 있습니다. 나는 플레이 중에 메뉴를 호출 할 수있다. 다음 레벨의 버튼을 사용할 수있다. (다음 레벨의 새로운 게임 플레이 레이어를 만들고 장면으로 전환한다.) 하지만 내가 원하는 것은 모든 블록을 죽인 수준의 끝에 있습니다. 플레이어가 다음 단계를 클릭 할 수 있도록 팝업 메뉴가 나타나길 원합니다. 하지만 게임 플레이 레이어에 블록 번호를 저장한다는 것이 증명이므로, 제로에 이르면 특정 속성이 참이됩니다. 하지만 수준이 끝나면 메뉴에서 해당 속성을 읽으려고하면 메뉴에 전환 한 후 내 게임 플레이 레이어가 이미 할당 취소되어 있기 때문에 그럴 수 없습니다.cocos2d에서 다음 단계로가는 방법은 무엇입니까?

Tldr; 버튼으로 레벨을 변경하는 방법?

+0

Appdelegate에서 해당 속성을 정의/초기화 할 수 있습니다.게임을 통해 살아 있기 때문에 메뉴 레이어에서도 사용할 수 있습니다. – Shailesh

답변

2

귀하의 질문은 게임 아키텍처에 관한 것입니다. 게임을 설계하는 방법에는 여러 가지 단점이 있습니다. 이것은 내가 Cocos2d 게임을 만들었을 때 많이 생각한 것입니다.

Shailesh_ios의 의견이 적용됩니다. 그러나 좀 더 복잡한 게임을 만들고 싶다면 게임의 여러 모듈과 구성 요소를 깔끔하게 정리하여 사용하고 지원하기 쉽도록 게임을 디자인하는 것이 좋습니다. 게임이 복잡해지면 AppDelgate에 많은 기능을 추가하면 매우 지저분해질 수 있습니다. 조직을 유지하고 코드를 업데이트 할 때 정신을 유지하려면 게임에서 중앙 집중식 게임 관리자 서비스를 만드는 것이 좋습니다.

이 게임이 필요합니다 중앙 GameManager 서비스 --For 모든 중앙 집중화 된 서비스를 만들고, 나를 위해 좋은 일을하고있다 한가지는 CCNode 또는 NSObject의 서브 클래스 인 게임 매니저 클래스를 만드는 것입니다. 이 클래스는 싱글 톤으로 만들어집니다. 그런 다음 GameCenter, OpenFeint, 인앱 구매, 플레이어 환경 설정, 지역 점수 및 업적, 물리 세계 관리자, 게임 오디오, 게임 상태 등과 같은 클래스를 별도로 만듭니다.

클래스 인스턴스를 모듈로 GameManager에 추가합니다. -이 클래스들은 모두 GameManager 싱글 톤 클래스가 소유하며이를 필요로하는 게임 구성 요소에 서비스를 제공 할 수 있습니다. 이러한 클래스는 일반적으로 메모리를 거의 사용하지 않기 때문에 장면이 바뀔 때마다 끊임없이 생성하고 파괴 할 필요가 없기 때문에 CPU주기와 배터리 수명이 낭비됩니다.

하지만 --Be주의주의의 참고

, 그것은 거기에 속하지 않는 그에게 일을 추가하여 글로벌 싱글 GameManager 클래스를 남용하기 쉽다 때문이다. 다양한 게임 구성 요소에서 요청할 수있는 중앙 집중식 서비스는 GameManager에 추가 된 것으로 간주 될 수 있습니다. GameManager에 추가함으로써 각 모듈을 자체 클래스로 코딩 한 다음 GameManager가 만들고 소유하게하는 것을 의미합니다.

- 예를 들어 , 사용자 정의 지역 점수와 업적 클래스는 플레이어의 점수를 저장하도록 설정 될 그들은 파일이나 NSUserDefaults로 유지하고, 그것을 필요로 어떤 게임 구성 요소에 대한 정보를 제공 할 수 있습니다.

사용자 지정 게임 센터 나 오픈 페인트 클래스는 플레이어를 인증 돌보고 것이다 다음 서비스 등, 리더 및 성과에 대한 게임 센터에 내장/오픈 페인트 UI를 제시, 점수/성과를 다운로드,

을 점수/업적을 제출 제공으로

게임을 디자인하는 데 집중할 수 있고 게임 내 어디에서나 게임에 필요한 기본 서비스를 제공 할 수 있습니다.

관련 문제