본문 바로가기
공부/Cocos Creator

코코스엔진 적응기 - 4. 스크립트와 라이프사이클

by svcbn 2024. 6. 23.

이번에는 스크립트를 만들어 동작시켜보자.

코코스는 무려 타입스크립트를 사용한다... 그게 뭔데...
개발 공부 2년차에 C# 외길 2년인 나로서는 본적도, 해본적도 없음...

하지만 뭐 언제는 할 줄 알아서 시작했나 싶다.
새로운 것에 도전하는 것이 내가 걸어온 길이었기에... < 이거 좀 멋있지 않나

.ts 파일을 생성하고, 열어 보자.
나는 이미 설치 단계에서 vsc에 ts 개발 환경을 해놨었는데, 안되면 어떡하지...?


먼저, 자동 생성된 파일을 열어보면,

이런 템플릿을 볼 수 있는데, 일단 하나씩 이해해보자.

엔진 커스텀이 가능한 cocos 라서, built-in 을 사용한다면 'cc' 모듈이 기본이 된다.

기본 cc 모듈에는 _decorator, Component, Node 가 포함되어 있으며,

_decorator 는 주로 component 의 상호 작용을 담당하며, editor와 serialization 의 property 를 담당한다.
Component 는 엔진에서 script가 작동하기 위해서 필요하며, 가장 기본이 되는 것 같은데,
지금까지의 이해 단계에서는 유니티에서 monobehavior 정도에 대응하는 것 같다.
동작을 위해서는 node에 들어있어야 하며, node 와 component 둘 다 활성화 상태여야 하는 것이 유니티와 동일한 듯.

ccclass 는 decorator이며, 엔진이 class의 이름을 구분할 수 있도록 사용한다.
@ccclass 를 변경하면, 엔진이 component로 인식하는 이름이 바뀌는 것.

property 도 decorator이며, property 를 정의하기 위해서 사용한다.
자세히는 나중에 사용하며 알아보도록 하자.


cocos도 LifeCycle에 따라 script를 실행한다.

그 종류는 onEnable, start, update, lateUpdate, onDisable, onDestroy 로,
유니티의 awake를 제외한 나머지는 동일한 느낌.

onEnable / onDisable 은 해당 component가 enable / disable 될 때 호출되는 이벤트이다.
start 는 component가 instantiate 되었을 때 한번만 호출된다. 순서로는 onEnable > start로 start가 더 느림.
update / lateUpdate 는 매 프레임마다 호출된다. 순서는 update > lateUpdate.
onDestroy 는 component가 destory 되었을 때 호출된다.


아래로는 ts로 코드를 작성해보며 사소하게 알게 된 점

모든 상황에서 this. 는 필수
c# 에서는 명시하지 않을 경우 this를 생략 할 수 있었지만, 여기선 안된다.
미리 this.를 작성하는 습관을 들여 놓아서 다?행.

변수 선언시 초기화 단계에서 타입이 정해진다.
c# 에서 하나하나 타입 선언 해줬었기 때문에 아직 좀 어색함...

메소드의 이름을 무려 소문자???? 로 지음
이건 진짜 컬쳐쇼크임... camelCase 를 따르는 것 같기는 한데, 이걸 소문자로 지어야 한다니,
이러다 천벌받으면 어떡함??? 정도의 문화 충격