코코스 크리에이터의 cc.Component는 유니티의 MonoBehavior 비슷하게
Life Cycle에 의해 순차적으로 콜백 함수들이 실행된다.
워낙 유니티와 흡사해서 따로 정리할 생각은 없었는데, 코코스 크리에이터를 다루려면 기본 중의 기본이라 한번 정리해본다.
간단하게 Life Cycle은 위와 같다.
1. onLoad
컴포넌트 스크립트가 초기화되는 단계에서 가장 처음 실행되는 콜백 함수다.
씬에 배치돼있던 컴포넌트들은 씬이 로드되면 onLoad 함수가 실행되고
런타임 중에 cc.instantiate로 컴포넌트를 생성하면 그때 실행된다.
주로 onLoad 함수 안에는 각종 변수들을 초기화하는 코드들을 넣는데
A 컴포넌트의 onLoad에서 B 컴포넌트의 onLoad에서 초기화되는 변수를 참조하는 경우 null reference 에러를 마주할 수 있다.
같은 씬에 있으면 A -> B -> C 순서대로 Life Cycle 함수들이 실행되기 때문이다.
2. start
씬의 노드트리 안에서 모든 컴포넌트들의 onLoad가 실행된 이후에 실행된다.
위에서 말한 onLoad 순서 때문에 변수 초기화를 start에서 하는 것도 방법인데, 이 역시 씬에서의 노드 순서를 고려해야 한다.
개인적으로는 onLoad와 start는 게임의 흐름을 시작하는 최상단 컴포넌트 또는
다른 컴포넌트를 참조하지 않는 독립적인 컴포넌트에서만 정의하고
이 외의 경우는 Iniialize 함수를 따로 만들어서 직접 실행하고 관리하는 방법을 선호한다.
3. update(deltaTime: number)
매 프레임마다 반복적으로 실행된다. 프레임 간의 실행 간격인 DeltaTime을 매개변수로 받아서 사용할 수 있다.
4. lateUpdate(deltaTime: number)
update는 모든 Animation update 전에 실행되고, lateUpdate는 그 후에 실행된다고 한다.
모든 컴포넌트들의 update가 끝난 뒤에 뭔가를 하고 싶을 때 정의.
5. onEnable
onEnable이 실행되는 조건은 두 가지다.
첫 째는 onLoad 이후에 해당 노드의 active와 enabled 모두 true이면 start 이전에 실행된다.
두 번째는 active && enabled가 false인 상태에서 어느 한쪽이 true가 돼서 둘 다 true가 되는 순간 실행된다.
어떤 컴포넌트의 동작을 멈출 때 비주얼적으로 보이는 상태에서 멈추길 원한다면 enabled false,
아예 화면에서 보이지도 않게 하려면 active false를 하면 된다.
둘의 공통점은 둘 다 start, update, lateUpdate의 실행 여부를 결정할 수 있다.
디테일한 둘의 차이점은, onLoad 이전에 active가 꺼져있으면 onLoad 실행 안되지만 enabled가 꺼져있으면 onLoad는 실행된다.
6. onDisable
active 또는 enable 중 하나가 true에서 false로 바뀌었을 때 실행된다.
7. onDestroy
컴포넌트나 노드가 destroy 됐을 때 실행된다. 이때 onDisable이 먼저 실행된 뒤에 onDestroy가 실행된다.
'Cocos Creator' 카테고리의 다른 글
Swallow Touch (0) | 2022.11.02 |
---|---|
드로우 콜(Draw Call) (2) | 2022.11.01 |
런타임 중 스프라이트 교체 (0) | 2022.10.14 |
노드를 화면 가득 차게 늘리는 법 #Basic (0) | 2022.10.14 |
모바일 해상도를 PC에서 확인하는 방법 (0) | 2022.10.14 |