[cocos2d-x 3.0] 씬(Scene) 전환하기


씬을 전환하는 방법은 크게 2가지가 있습니다.

일단 2개의 씬을 만들고, 그것의 이름이 MenuScene, GameScene이라고 가정을 하고 설명을 드리겠습니다.


1. pushScene, popScene

Push와 Pop은 우리가 흔히 알고 있는 스택구조에 Push, Pop과 비슷합니다. 

즉, 씬을 관리하는 스택이 있는 데 그 곳에 씬을 넣어다가 다시 빼내는 방식입니다.

Push를 할때는 어떤 씬을 넣을 것인지 지정을 해야하며, Pop을 할때에는 씬을 지정하지 않고 가장 위에 있는 씬

(가장 나중에 Push를 했던 씬)을 빼내게 됩니다.

즉, MenuScene에서 GameScene을 pushScene하면 메뉴화면에서 게임화면이 보이게 되고, 

여기서 PopScene을 부르게 되면 GameScene이 나가게 되서 결국 MenuScene이 보이게 됩니다.

사용은 아래와 같이 간단하게 사용하실 수 있습니다.


Director::getInstance()->pushScene(GameScene);

Director::getInstance()->popScene();


2. replaceScene

replace의 사용방법은 Push, Pop보다 조금 더 쉽습니다. 그냥 간단하게 전환하려는 씬을 지정해주기만 하면 됩니다.


Director:: getInstance()->replaceScene(GameScene);

Director:: getInstance()->replaceScene(MenuScene);


3. 차이점

위에 소스를 보면 알겠지만, PushScene, PopScene의 경우 GameScene을 위에 쌓았다가 다시 빼내는 방식으로

씬 전환을 하고 있습니다. 그리고 replace 같은 경우에는 매번 전환하려는 씬을 지정해주는 방식입니다.

그렇기 때문에 위와 같은 경우에 Push, Pop을 사용하면 MenuScene은 소멸되지 않고 메모리에 늘 상주에 있습니다.

즉, pushScene으로 GameScene을 부르게 되면 MenuScene도 있는 상태에서 GameScene이 다시 생성되는 것이고,

popScene을 부르게 되면 위에 있는 GameScene이 소멸되는 구조입니다.

replaceScene의 경우에는 전환하려는 씬을 지정하고 화면이 전환되면, 전환이 완료된 후에 이전에 씬은 소멸됩니다.

이것이 가장 큰 차이점입니다.


4. 화면전환 효과(Transition)

씬을 전환할때에는 화면 전환 효과를 줄 수 있습니다. 단, PushScene와 replaceScene에서만 적용할 수 있습니다.

cocos2d-x에서는 다양한 전환 효과를 제공하고 있으며, Transition을 입력을 하면 자동완성기능에서 해당되는 효과의 리스트를 보여줄 것입니다. 


사용방법은 아래와 같습니다. Scene을 전환하는 방법은 replaceScene을 사용했습니다.


효과 없이 Scene 전환

Scene *pScene = GameScene::scene();

Director:: getInstance()->replaceScene(pScene);


전환 효과 적용

Scene *pScene = TransitionCrossFade::create(3.0, GameScene::scene());

Director:: getInstance()->replaceScene(pScene);

위와 같이 전환효과에는 전환되는 시간과 전환하려는 씬을 입력하는 것이 일반적인 방법입니다.




더 많은 정보는 http://injakaun.blog.me






신고