본문 바로가기
유니티

[Unity] 코루틴(Coroutine)과 인보크(Invoke)의 차이점

728x90
반응형

🎲 코루틴 & 인보크란?

    코루틴과 인보크는 둘 다 유니티에서 병렬적인 프로그래밍을 할 대 사용되는 기능입니다. 멀티 스레드 처럼 실제로 스레드가 추가되어 비동기식으로 작동하지는 않지만 함수내에 중단점 혹은 반복점을 설정하여  마치 비동기식 처럼 작동합니다. 

 

코루틴이 없을경우 지금 시점으로부터 5초 뒤에 특정 함수를 불러오고 싶다면 매 프레임마다 시간을 체크한 후 실행시켜주어야 합니다. 헌데, 코루틴을 사용할 경우 해당함수를 5초후에 깨워달라고 한 후에 잠들어 있다가 실행되니 매 프레임마다 시간 체크를 하지않아도 되어서 효율적입니다. 

 

 

🍳 코루틴 특징

    GameObject가 active상태일 때에만 작동하며 Time.scale의 영향을 받을지 말지 결정 가능합니다. 오브젝트를 비활성봐할 시 코루틴이 종료되고, 재활성화시에도 코루틴은 재실행되지 않습니다.

 

🍳 인보크 특징

    InvokeRepeating통해서 일정시간 동안 일정주기로 함수를 반복시킬 수 있습니다. 시간이 끝나기 전에 반복을 멈추고 싶을 때는 CancelInvoke를 사용하거나 오브젝트를 파괴하여 멈춰 줄 수 있습니다. 

반응형