밀하우스 마나스톰
GP
밀하우스 마나스톰
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Cocos Creato.. (35)
    • JavaScript 기.. (11)
    • JavaScript 게.. (4)
    • Dev Tool (1)
    • 1인 개발 (19)
      • 개발 환경 (4)
      • 기능 구현 (2)
      • 게임 리소스 (5)
      • 스팀 게임 출시 (4)
      • 좋은 글 스크랩 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • steam
  • 웹 게임
  • 게임 출시
  • 코코스 크리에이터
  • 배열 함수
  • 절차
  • Sprite Frame
  • 자바스크립트
  • 타입스크립트
  • 코코스
  • typescript
  • 해상도
  • Cocos Creator
  • 스팀
  • 게임 등록
  • tween
  • 무료 사운드
  • 유니티
  • resolution
  • javascript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밀하우스 마나스톰

GP

getChildByName
Cocos Creator

getChildByName

2021. 6. 11. 16:00

1. 유니티의 Transform.Find

 

 

유니티에서 특정 오브젝트를 검색해서 찾아주는 함수는 Transform의 Find 함수가 대표적이다.

 

스크립트에서 간단하게 자식 노드들에 접근할 수 있고, 파라미터로 들어가는 path에 경로를 더하고 빼면서 다양하게 활용할 수 있다.

 

 

 

 

2. 코코스 크리에이터의 Node.getChildByName

 

 

유니티의 Find와 대응되는 함수가 코코스 크리에이터에는 getChildByName 이라는 함수로 존재한다.

 

문제는 이 함수는 노드의 자식을 한 단계밖에 검색하지 못 한다는 것이다.

 

 

 

 

A 노드에서 getChildByName 함수를 통해서 B, C는 찾을 수 있지만 그 아래 D, E, F, G는 못 찾는다.

 

이런 큰 단점이 있지만 코코스 2.4.8 기준으로, 유니티의 Find와 같은 함수는 아직까지 제공하지 않고 있다.

 

결국 A 노드에서 H 노드를 찾으려면

 

root.getChildByName("B").getChildByName("D").getChildByName("H") 라는 코드를 작성해야 한다.

 

그래서 이를 매핑해서 유니티의 Find 함수와 최대한 비슷하게 함수를 만들면 이러하다.

 

 

static Find(root:cc.Node, path:string):cc.Node
{
    var ret = root;
    var childs = path.split("/");
    
    for(var i = 0; i < childs.length; ++i)
    {
        if (ret == null) {
            console.log("Can not find - " + path);
            return null;
        }
        
        ret = ret.getChildByName(childs[i]); 
    }
    
    return ret;
}

 

입력받은 문자열을 '/' 단위로 잘라서 노드 구조의 레벨(level)을 나누고

 

재귀 함수 형태로 getChildByName 함수를 호출해서 레벨을 하나씩 내려가면서 노드를 찾는 구조다.

 

 

var target = Utility.Find(this.node, "Houses/West/LeftSide");

 

사용할 때는 이와 같이 유니티의 Find 함수와 비슷하게 사용할 수 있다.

'Cocos Creator' 카테고리의 다른 글

[2.4.5 버그] cc.tween repeatForever  (0) 2022.03.10
비동기 함수 실행 방법들  (0) 2022.01.07
cc.tween  (0) 2021.06.09
[예제 게임] GameScene #5 (스프라이트 로드와 교체)  (0) 2021.06.07
[예제 게임] GameScene #4 (오디오 매니저)  (0) 2021.06.04
    'Cocos Creator' 카테고리의 다른 글
    • [2.4.5 버그] cc.tween repeatForever
    • 비동기 함수 실행 방법들
    • cc.tween
    • [예제 게임] GameScene #5 (스프라이트 로드와 교체)
    밀하우스 마나스톰
    밀하우스 마나스톰

    티스토리툴바