게임 개발/Cocos Creator

[cocos creator]-03. scheduler에 대한 정리

Heesuk Lee 2018. 10. 14. 15:12

코코스 크리에이터에서는 타이머를 가지고 편리하게 사용할수있는 함수가 있습니다. 바로 scheduler입니다.


setTimout과 setInterval도 존재하지만 더 빠르고 간편하고 강력한 schedule 사용할 수 있습니다.




scheduler을 구성하는 함수로써 schedule과 scheduleOnce, unschedule 3가지가 있습니다.


1. schedule - 콜백함수와 주기를 말하는 interval, 몇번 반복할지 말하는 repeat, 첫 호출을 얼마나 뒤에 실행할건지 정하는 delay변수들을 파라미터를 받아와 언제부터 몇번, 어느 주기로 콜백함수를 호출하는 함수입니다.



2. scheduleOnce - 단한번만 실행되는 함수로써 콜백함수와 딜레이를 파라미터로 가져 일정 딜레이후 함수를 호출하는 기능을하는 함수입니다.



3. unschedule - 실행되는 scheduler를 중단하는 함수로써 중단한 콜백함수를 파라미터로 가집니다.





다시한번 천천히 schedule에 대해 파보려고합니다.


첫째는 일반함수와 화살표함수로 구분해서 정리하고,

둘째는 schedule에 있는 선택적파라미터에 관해 정리하고자 합니다.


1. 일반함수와 화살표함수


schedule함수를 실행할때 콜백함수의 현재 스코프를 알수없기때문에 일반함수를 콜백함수로 넣을때는 항상

this를 바인딩해줘야 합니다.


그러나 화살표함수의 경우는 현재 함수의 this를 보존하는 기능을 가지고 있습니다. 그렇기 때문에 별다른 this의 바인딩 없이도 this의 보존이 가능합니다. 



그렇기 때문에 schedule 또는 다른 콜백함수를 요구하는 함수에서 사용하는 콜백함수는 모두 화살표함수로 사용하는것이 편리하지않을까 생각합니다..ㅎㅎ




사용하시면 이렇게 6번씩 호출되는 것을 확인할 수 있습니다. 한번호출 + 반복(repeat) 5번 호출



2. schedule의 선택적파라미터


schedule함수는 총 3개의 선택적 파라미터를 가지고 있습니다. 


interval - 주기를 말하며, 몇초를 주기로 호출하는지 정해줍니다.

repeat - 몇번을 반복할것인지 그 횟수를 설정합니다.

delay - 첫 시작을 몇초뒤에 할것인지 설정합니다.



하지만 선택적 파라미터이므로 채워주지않아도되는 파라미터 입니다.


interval의 default는 update함수처럼 매프레임마다 호출하게됩니다.


repeat의 default는 무한하게 호출하게됩니다. 그러므로 항상 종료할때는 

unschedule로 schedule을 중단해줘야합니다.


delay의 default는 바로시작이 아닌 interval만큼의 딜레이를 가집니다.



repeat가 default이기 때문에 무한반복의 위험이 있기때문에 위 함수처럼 필요한순간에 unschedule을 통해 schedule을 중단시켜줍시다. 


위함수처럼 콜백함수 내부에서만 사용되는 것이 아니기때문에 외부에서의 사용도 가능합니다. (기왕이면 외부에서의 사용이 좀더 보기 깔끔하다는 생각이...ㅎㅎ)




제가 의도한대로 3번만 호출하고 중단하는것을 확인할 수 있었습니다.



schedule함수는 update함수의 사용을 줄이기 위해 주로 사용하지만 update함수를 기반으로 동작하기 때문에 update의 사용이 전혀 없는것이 아니라는점을 기억해야합니다.


그러나 무분별적인 update사용이 아닌 목적이 뚜렷하기 때문에 프로그램의 부하를 최소화 할 수 있는 방법중에 하나라고 생각합니다.

반응형

'게임 개발 > Cocos Creator' 카테고리의 다른 글

[cocos-creator]-02. LifeCycle정리  (2) 2018.10.09
[cocos-creator]-01. NodePool에 관한 정리  (0) 2018.09.29