NodePool이란 노드타입으로된 메모리저장소으로써 게임의 최적화 방법중 하나인 오브젝트풀을 따릅니다.
오브젝트풀은 필요한 오브젝트를 매번 intantiate하고 remove하는데 사용되는 데이터비용을 줄이기 위해 미리 여러개의 오브젝트를 생성하고 재사용하는 방식으로 게임플레이에 소모되는 데이터를 줄여주는 방식입니다.
1. NodePool의 메소드 put, get
NodePool이 가지는 메소드로 크게 put과 get이 있는데
put은 생성된 NodePool에 집어넣어 저장하는것을 말하고, 노드를 파라미터로 가집니다. 주의할 것이 있다면
여기서 노드를 인스턴스하고 부모를 설정하면 put으로 인해 노드가 재활용이 된다고하지만 노드풀에 들어가면서 노드트리에서는 진짜로 사라지기때문에 이곳에서의 부모설정은 무의미하게 됩니다.
get은 NodePool에 담겨있는 Node를 밖으로 꺼내 생성한다는 것을 말하고 반환값이 노드입니다. 생성할 노드를 말하며 필요한경우 매번 부모를 설정해줘야합니다.
2.각 메소드의 콜백함수 reuse, unuse
그리고 여기서 중요한 것은 생성된 노드가 클래스를 컴포넌트로 가지고있을때 노드를 풀에서 꺼낼때와 넣을때 호출되는 콜백함수 reuse와 unuse가 있습니다.
reuse는 노드를 꺼낼때 즉 get함수를 호출했을때 실행되는 콜백함수로써 노드가 재생성되었을 때마다 호출하기때문에 매번 초기화가 필요한 것만 이 콜백함수에 넣어줍니다.
많이 유의할점은 하나의 노드가 생성되었을때 가장먼저실행되는 onLoad보다 순서가 앞입니다. 그리고 하나더있다면 get이 호출된 시점에서 파라미터를 reuse가 받아와 파라미터를 사용할 수 있습니다.
unuse는 노드를 노드풀에 다시 집어넣을때, put함수가 실행됐을때 호출하는 콜백함수입니다. unuse에서는 보통 reuse에서 실행한 것들의 정리를 담당하면 됩니다.
NodePool을 정리하면서 느낀포인트
1. 부모설정위치 - 인스턴스뒤가 아닌 get뒤에 해야한다.
2. reuse의 lifecycle위치 onLoad보다 앞에 있다.
(onLoad는 처음생성때 한번만실행하지만 reuse는 생성될때마다 생성)
3. reuse의 파라미터 활용 - 다른 클래스의 파라미터값을 가져오는 것이므로 활용하면 아주 좋다.
'게임 개발 > Cocos Creator' 카테고리의 다른 글
[cocos creator]-03. scheduler에 대한 정리 (0) | 2018.10.14 |
---|---|
[cocos-creator]-02. LifeCycle정리 (2) | 2018.10.09 |