자작 게임도 잘 부탁드려요~

adsense



[cocos2d-x] 노드 하이어랄키 시각화

유니티 에디터는 하이어랄키 구조를 갖고 있고,
게임 테스트를 해 보면 이 하이어랄키에 게임 노드가 리얼타임으로 추가, 삭제되는게 보이죠.


이게 시각적으로 반영되니까 너무 좋더군요.


생각해보니까, 지금 씬에 어떤 노드들이 붙어있고 어떤 차일드를 갖고 있나,
이걸 확인하면 되는거거든요.

cocos2d-x에서도 못할게 없겠다 싶었습니다.

해서 간단히 만들어 본 노드 하이어랄키 구하기.

  1. string GetHierarchy(Node* root)
  2. {
  3. string ret;
  4. for (const auto node : root->getChildren())
  5. {
  6. string name = node->getName();
  7. if (name == "")
  8. name = "(no name)";
  9. ret += name;
  10. if (node->getChildrenCount() > 0)
  11. ret += "\n" + GetTreeHierarchy(node, 1);
  12. else
  13. ret += "\n";
  14. }
  15. return ret;
  16. }
  17. string GetTreeHierarchy(Node* tree, int depth)
  18. {
  19. string ret;
  20. string tabs;
  21. for (int i = 0; i < depth; i++)
  22. tabs += " ";
  23. for (const auto node : tree->getChildren())
  24. {
  25. string name = node->getName();
  26. if (name == "")
  27. name = "(no name)";
  28. ret += tabs + name;
  29. if (node->getChildrenCount() > 0)
  30. ret += "\n" + GetTreeHierarchy(node, depth + 1);
  31. else
  32. ret += "\n";
  33. }
  34. return ret;
  35. }

GetHierarchy를 호출하면서 루트 노드를 매개변수로 주면 해당 노드와 자식 노드에 연결된 노드 목록을 문자열로 돌려줍니다.

매개변수를 Director::getInstance()->getRunningScene()로 주면, 현재 씬에 표시중인 모든 노드의 하이어랄키를 얻을 수 있습니다.
(노드에 이름을 지정하지 않으면 (no name) 으로 표시됩니다)

이 함수는 단순히 문자열(string)을 구할 뿐이니까,
시각적으로 나타내려면 Label 등을 사용해서 화면에 뿌려줄 필요가 있습니다.

예를 들면 아래와 같은 식이 되겠지요,

  1. auto hier = Label::createWithTTF("", "fonts/arial.ttf", 20);
  2. hier->setAnchorPoint(Vec2(0, 1));
  3. hier->setPosition(10, visibleSize.height - 10);
  4. hier->setName("HIERARCHY");
  5. addChild(hier, 100);
  6.  
  7. schedule([=](float dt)
  8. {
  9. string hierarchy = GetHierarchy(Director::getInstance()->getRunningScene());
  10. hier->setString(hierarchy);
  11. }, "HIERARCHY");

만들고 있는 게임의 타이틀 화면을 통해서 테스트 해 봤습니다.
이미 표시되어 있는 것들의 하이어랄키 구조는 물론,
운석 스프라이트를 임의로 출력해서 생성, 소멸되는 것을 볼 수 있습니다.


새벽에 갑자기 생각나서 만들어 본거니 뭔가 더 개선의 여지가 있을지도요..?
비활성화 상태의 노드를 구별해 준다거나..




덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

사이토 나오키의 일러스트 첨삭 레슨 Before & After
사이토 나오키 저/박수현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC