
Basic Cocos2d-x Concepts · GitBook
No results matching ""
docs.cocos.com
유튜브 튜토리얼이나 강의사이트에서 찾아봤는데 없어서..공식 document를 읽기로 했다.
AppDelegate
appDelegate는 프로젝트의 생명주기를 관리하는 클래스이다.
여기서 초기화,씬 관리,리소스관리 등 프로젝트 전반에 걸쳐 중요한것들이 여기서 관리 된다.
appDelegate에서 중요한 함수는 다음 3가지이다.
virtual bool applicationDidFinishLaunching();
//게임이 시작되고 한번 호출된다.여기서 초기화 작업을 진행해주면 된다.
//유니티의 start같은거라고 생각하면 될듯.
virtual void applicationDidEnterBackground();
//게임이 background로 진입했을때 호출 된다.
virtual void applicationWillEnterForeground();
//게임이 다시 forgorund로 진입될때 호출된다..
AppDelegate
해상도 변경
appDelegate.cpp에서 간단하게 해상도를 바꿀수 있다.
static cocos2d::Size designResolutionSize = cocos2d::Size(800, 640);
static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);
바로 여기 부분을 건드려주면 각 플랫폼별로 해상도를 설정할수 있다.
제목 바꾸기
이또한 appDelegate.cpp에서 간단하게 설정해줄수 있다.
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
glview = GLViewImpl::createWithRect("FirstGame", cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height));
#else
glview = GLViewImpl::create("FirstGame");
#endif
director->setOpenGLView(glview);
}
다음과 같이 초기화 작업이 진행되는 applicationDidFinishLaunching에서 바꿔주면 된다.
저기 createWithRect함수안에 들어가는 string값이 타이틀이 되는거다.
밑에 else문 에서도 동일한 이름으로 바꿔주어야 한다.
Director
cocos2dx는 영화처럼 게임의 흐름을 감독 객체에게 맡긴다.
Director역할중 하나는 씬의 관리 입니다.Director싱글톤 객체로 단 하나만 존재한다.
Director 객체를 사용하는법.
auto director = cocos2d::Director::getInstance();
director->runWithScene(scene);
auto s = cocos2d::Director::getInstance()->getWinSize();
싱글톤 객체이기 때문에 어디서든지 접근을 할수 있다.
Director 객체가 할수 있는것.
앞서 말했다시피 씬의 흐름을 제어할수 있다.
director->runWithScene(scene); // 게임 시작 시 사용
director->replaceScene(scene2); // 실행 중인 장면에서 다른 장면으로 변경할 때 사용
씬 전환에 간단하게 fadein fadeout 효과도 줄수 있다.
auto newScene = NewScene::createScene();
auto transition = TransitionFade::create(2.0f, newScene);
Director::getInstance()->replaceScene(transition);
씬전환 외에도 게임의 전반적인 흐름을 제어하는게 Director의 역할이다.
cocos2d::Director::getInstance()->stopAnimation();
cocos2d::Director::getInstance()->startAnimation();
위의 코드는 애니메이션을 정지하고 다시 실행시키는 코드 이다.
이 밖에도 다양한 설정을 건드릴수 있다.
cocos2d::Director::getInstance()->setDisplayStats(true);//true면 현재 fps가 보이고 false면 보이지 않음
cocos2d::Director::getInstance()->setContentScaleFactor(....);//콘텐츠 스케일 펙터 설정
Scene
Director가 나온김에 영화를 한번 생각해보자.
영화는 각각의 Scene이 모여 하나의 긴 영상을 만든다고 할수 있다.
게임이라고 크게 다르지 않다.각각의 Scene이 있고 거기서 해줘야 할것들이 다 다르다.
Scene은 각 Node들의 집합이며 Cocos2d에서는 이를 Scene Graph라고 한다.
Cocos2dx에서는 renderer가 이를 순서대로 잘 그려준다.
때문에 우리는 어떻게 굴러가는지 그리고 제대로 사용하는법만 익히면 된다.
Cocos2dx는 다음과 같은 형태로 Scene이 구성되어 있다.
Graph라고 했지만 사실을 tree형태로 되어있다.

그리고 Cocos2dx는 중위 순회 알고리즘을 사용한다.
때문에 오른쪽 노드가 왼쪽노드 위에 그려진다.
다음 사진을 중위순회 해보면 D - B - E - A - C - G - F - H 이기 때문에 H노드가 가장 마지막에 그려진다.
여기서 또하나 고려해야할점이 있는데 zorder가 양수인것들은 오른쪽에 오고 음수인것들은 왼쪽에 간다는 사실이다.
'cocos2d-x' 카테고리의 다른 글
| [cocos2d-x]#5 UI에 대해 알아보자2. (1) | 2025.01.15 |
|---|---|
| [cocos2d-x]#4 UI에 대해 알아보자. (2) | 2025.01.08 |
| [cocos2d-x]#3 Action을 조합하는 방법을 알아보자. (3) | 2025.01.01 |
| [cocos2d-x]#2 Sprite와 Action을 알아보자 (1) | 2024.12.29 |
| [cocos2d-x]#0 시작하기 (13) | 2024.09.28 |