귀하의 질문은 게임 아키텍처에 관한 것입니다. 게임을 설계하는 방법에는 여러 가지 단점이 있습니다. 이것은 내가 Cocos2d 게임을 만들었을 때 많이 생각한 것입니다.
Shailesh_ios의 의견이 적용됩니다. 그러나 좀 더 복잡한 게임을 만들고 싶다면 게임의 여러 모듈과 구성 요소를 깔끔하게 정리하여 사용하고 지원하기 쉽도록 게임을 디자인하는 것이 좋습니다. 게임이 복잡해지면 AppDelgate에 많은 기능을 추가하면 매우 지저분해질 수 있습니다. 조직을 유지하고 코드를 업데이트 할 때 정신을 유지하려면 게임에서 중앙 집중식 게임 관리자 서비스를 만드는 것이 좋습니다.
이 게임이 필요합니다 중앙 GameManager 서비스 --For 모든 중앙 집중화 된 서비스를 만들고, 나를 위해 좋은 일을하고있다 한가지는 CCNode 또는 NSObject의 서브 클래스 인 게임 매니저 클래스를 만드는 것입니다. 이 클래스는 싱글 톤으로 만들어집니다. 그런 다음 GameCenter, OpenFeint, 인앱 구매, 플레이어 환경 설정, 지역 점수 및 업적, 물리 세계 관리자, 게임 오디오, 게임 상태 등과 같은 클래스를 별도로 만듭니다.
클래스 인스턴스를 모듈로 GameManager에 추가합니다. -이 클래스들은 모두 GameManager 싱글 톤 클래스가 소유하며이를 필요로하는 게임 구성 요소에 서비스를 제공 할 수 있습니다. 이러한 클래스는 일반적으로 메모리를 거의 사용하지 않기 때문에 장면이 바뀔 때마다 끊임없이 생성하고 파괴 할 필요가 없기 때문에 CPU주기와 배터리 수명이 낭비됩니다.
하지만 --Be주의주의의 참고
, 그것은 거기에 속하지 않는 그에게 일을 추가하여 글로벌 싱글 GameManager 클래스를 남용하기 쉽다 때문이다. 다양한 게임 구성 요소에서 요청할 수있는 중앙 집중식 서비스는 GameManager에 추가 된 것으로 간주 될 수 있습니다. GameManager에 추가함으로써 각 모듈을 자체 클래스로 코딩 한 다음 GameManager가 만들고 소유하게하는 것을 의미합니다.
예 - 예를 들어 , 사용자 정의 지역 점수와 업적 클래스는 플레이어의 점수를 저장하도록 설정 될 그들은 파일이나 NSUserDefaults로 유지하고, 그것을 필요로 어떤 게임 구성 요소에 대한 정보를 제공 할 수 있습니다.
사용자 지정 게임 센터 나 오픈 페인트 클래스는 플레이어를 인증 돌보고 것이다 다음 서비스 등, 리더 및 성과에 대한 게임 센터에 내장/오픈 페인트 UI를 제시, 점수/성과를 다운로드,
을 점수/업적을 제출 제공으로
게임을 디자인하는 데 집중할 수 있고 게임 내 어디에서나 게임에 필요한 기본 서비스를 제공 할 수 있습니다.
Appdelegate에서 해당 속성을 정의/초기화 할 수 있습니다.게임을 통해 살아 있기 때문에 메뉴 레이어에서도 사용할 수 있습니다. – Shailesh