2014년 3월 7일 금요일

Cocos2d-x 기본 개념 잡기


Cocos2d를 사용하기 위해 익숙해져야 하는 용어들과 그 역할을 알아 봐야 할거 같다.
아래 내용은 Cocos2d을 구글 아저씨 한테 물어 여기저기에서 인용한 것들이다.

※ 참고 사이트
Cocos2d : http://www.cocos2d-x.org/wiki/Director_Scene_Layer_and_Sprite
평범한 후라이의 블로그 : http://blog.daum.net/synsy/7664323
마루티님의 블로그 : http://blog.naver.com/yhjeong89
Descode.net : http://descode.net/index.php/archives/105
:
:

CCDirector - 싱글톤 객체. 프로그램이 실행되는 동안 단 하나의 객체만 생성된다. 이 CCDirector가 어떤 Scene을 화면에 띄우기로 결정하는지에 따라서 화면에 보이는 그림이 달라진다. 단순히 화면을 띄우는 것 외에도 앱을 일시정지(Pause) 시키거나 다시 재개(Resume)하는 등 다양한 역할을 하지만 일단 화면을 띄우는데 주 역할을 한다고만 알아놓아도 될거 같다.(Scene 을 관리하며, 전환처리 등을 담당)
포함관계로는 가장 최상위 클래스라고 할 수 있고 오로지 CCScene클래스만 포함될 수 있다.

CCScene - 그림을 그릴 때 사용하는 종이라고 생각하면 된다.(장면을 만들때 사용하는 클래스). 종이가 있어야 그 위에 그림을 그릴 수 있듯이 CCScene 객체가 있어야 화면에 그림을 표시할 수 있다. 하나의 CCScene은 여러개의 CCLayer를 참조할 수 있다. (아래 그림에서는 하나의 CCLayer만 참조하고 있지만 실제로는 다수의 CCLayer를 참조할 수 있다.)
게임상 한 동작을 완결시키는 전체적인 화면을 이야기 한다. Android로 치자면 Activity 같은거라고 보면 됨.
게임에는 MenuScene, GameScene, OptionScene, RankScene 등을 만들어서 관리하는 것이 대부분인데, 이를 쉽게 구현할 수 있도록 클래스 지원한다. CCLayer, CCNode, CCSprite, CCMenu 등의 객체를 포함할 수 있고, 장면을 그릴 때에 여러 클래스셋에 대한 컨테이너 역할을 한다.

예를 들어, 다음과 같은 장면 게임을 가질 수있다
소개, 메뉴, 레벨 1, Cutscene 1, 레벨 2, 승리 Cutscene, Losing Cutscene, Highscore 화면
[ game follows ]


CCLayer - 코딩을 하면서 대부분의 작업 시간을 할애하게 될 부분이다. 이 CCLayer 객체에 그림도 넣고 각종 메서드도 집어넣으면서 기능을 구현하게 된다. CCLayer는 CCNode 객체를 참조할 수 있다.
Android로 치면  Layout 같은 거. Activity가 Layout을 불러서 화면을 보여주고
Layout을 교체해서 다른 화면을 보여주기도 하고 그런거!!
기본적으로 CCScene와 비슷하게 컨테이너 역할을 수행하지만, 가장 다른 점은 사용자의 입력을 처리할 수 있는 인터페이스를 제공한다. 터치나 센서 반응 등에 대한 처리를 할 수 있으며, 하나의 Scene에는 하나 이상의 CCLayer로 구성됨.
[ CCLayer 예 ]



CCNode - 일반적으로 화면에 보이는 그림과 같은 객체들을 대부분 CCNode하고 한다.  통상적으로 Node라고 칭한다. CCScene, CCLayer, CCSprite등은 모두 CCNode를 상속받고 있으므로 이들을 Node라고 할 수 있다. 위에서 '참조한다' 라는 표현을 사용했지만 '붙는다' 라고 이해하시는게 빠르겠다. CCLayer에 계속해서 Node를 붙여나감으로서 Layer를 완성해 나가는 것.

CCSprite - CCNode를 상속하는 대표적인 객체. '그림'이라고 생각하시면 될거 같다.(화면 구성요소) Cocos2D에서 사용하는 모든 그림들은 CCSprite의 객체를 통해서 화면에 출력할 수 있다.(Image의 표현, Animation이나 Action등을 처리)
Android로 치자면 Button 이니 TextView니 하는것들에 해당!! 게임에서 등장하는 이미지들이 대부분 CCSprite 이다.

CCLayer에 CCSprite들을 넣어서 화면을 만들고, 이 CCLayout을 CCScene에 담아서 보여주는거라고 이해하면 대충 OK.




댓글 없음: