본문 바로가기

IT 번역/Cocos2d-x 메뉴얼[manual] 번역

디렉터 | Director

작성일자: 2019-05-05

페이지: https://docs.cocos2d-x.org/cocos2d-x/en/basic_concepts/director.html

 

Director · GitBook

Director Cocos2d-x uses the concept of a Director, just like in a movie! The Director object controls the flow of operations and tells the necessary recipient what to do. Think of yourself as the Executive Producer and you tell the Director what to do! One

docs.cocos2d-x.org

Cocos2d-x는 디렉터(Director)의 개념을 사용합니다, 마치 영화처럼요! 디렉터(Director) 객체는 동작의 흐름을 제어하고 필요한 요소들에게 무엇을 해야 하는지를 알려줍니다. 자신이 Executive Producer라고 생각해보세요, 그리고 Director한테 명령을 하는 겁니다! (실제로는 우리가 명령을 받지만 말이죠..) 디렉터(Director)가 하는 일 중 제일 흔한 것은 씬(Scene) 교체와 그 교체시에 사용하는 전환 효과(Transitions)을 컨트롤하는 것입니다. 디렉터(Director)는 공유 singleton 객체이므로 코드 어디에서나 사용하실 수 있습니다. (Singleton - 효과적으로, 해당 클래스의 단 하나의 인스턴스만 사용합니다.)

일반적인 게임 흐름도를 하나 준비했습니다. 디렉터(Director)는 게임 흐름에서 각 조건에 따라 씬(Scene)들 사이의 전환을 담당합니다:

당신이 바로 자신의 게임의 디렉터입니다. 무엇을 언제, 어떻게 할지 직접 결정하세요. 당신이 주인입니다!

 

디렉터의 관심을 받으려면 어떻게 해야 하나요? | How do I get the Director's attention?

디렉터(Director)와 연동하고 싶다면, 부르시면 됩니다. 디렉터(Director)를 부르는 몇개 안되는 방법은 다음과 같습니다:

// 디렉터(Director)를 얻고, 사용합니다.
// (get the director and then use it)
auto director = cocos2d::Director::getInstance();
director->runWithScene(scene);

// 개별 동작마다 디렉터(Director)를 가져옵니다.
// (반복적으로 호출하는 것은 권장하는 방식이 아닙니다.)
// (get the director for each operation (not recommended for repeated requests))
auto s = cocos2d::Director::getInstance()->getWinSize();

 

디렉터(Director)가 할 수 있는게 뭘까요? | What things can the Director do?

디렉터(Director)는 다양한 기능을 제공하고 그 이상의 일을 할 수도 있습니다. 위에 말씀드린 것 처럼, 디렉터(Director)는 전체 쇼를 컨트롤합니다. 디렉터(Director)가 별반 힘들이지 않고도 할 수 있는 몇가지 유용한 사례를 보여드리죠:

씬(Scenes): 씬을 단순히 전환하거나, 전환효과(Transition Effects)를 적용하여 전환하거나, 기타 등등..
director->runWithScene(scene); // 게임을 시작할 때 사용합니다.(use when starting your game)

// 동작중인 씬(Scene)에서 다른 씬(Scene)으로 전환할 때 사용합니다.
// (use when changing from the running scene to another scene)
director->replaceScene(scene2);

 

일시정지/일시정지 해제(Pause/Resume): 게임을 일시 정지합니다. (물리 엔진을 사용중이었다면 추가적으로 해야 할 일이 더 있습니다.)
// 애니메이션을 정지합니다.(stop animations)
cocos2d::Director::getInstance()->stopAnimation();

// 애니메이션을 정지한 지점에서부터 재개합니다.(resume animations)
cocos2d::Director::getInstance()->startAnimation();

 

내부 정보 얻기(Get internal info): 게임의 내부 설정들을 읽어오거나 설정합니다. 더 자세한 기능은 API Reference를 참고하세요.
// FPS를 화면에 표시합니다.(turn on display FPS )
cocos2d::Director::GetInstance()->setDisplayStats(true);

// FPS를 설정합니다. 별도로 설정을 하지 않을 경우, 기본 값은 1.0/60 입니다.
// (set FPS. the default value is 1.0/60 if you don't call this)
cocos2d::Director::GetInstance()->setAnimationInterval(1.0f / 60);

// 컨텐트 비율 펙터를 설정합니다.(set content scale factor)
cocos2d::Director::GetInstance()->setContentScaleFactor(....);



게임을 만들어 봅시다. - 3 단계 | Let's Build A Game - Step 3

이전 단계에서 AppDelegate라는 클래스를 살펴보았습니다. 다음 장에서는 씬(Scene)들을 둘러볼 겁니다. 다음 단계로 들어가기에 앞서, 집안 정리를 좀 해야할 듯 싶네요.

자원(Resources)

모든 게임은 반드시 자원들이 필요합니다. 폰트나 음향 효과(Sound Effects), 음악, 스프라이트(Sprite) 같은 것들을 자원이라 할 수 있습니다. 이 샘플 게임에서는, 게임이 진짜 놀만한 작품이 되기전까지는 기본 도형(Simple Shapes)들을 사용하려고 합니다. 한참 뒤에 진짜 그림들(Real Art work)을 쓸 수 있겠지요.

자, 다음으로 넘어가죠...

바로, 씬(Scenes)입니다.