프로그래밍/Unity

Unity) Coroutine 함수란 ?

musiklo 2020. 12. 28. 19:36

이번엔 코루틴 함수에 대해서 다뤄(?) 기록 해보려고 한다. 코루틴 함수라는 개념은 Unity 에서 엄청 중요한 개념인데 간단하게 말하자면 Invoke 함수의 기능을 한다고 볼수도 있다. 함수라는 개념은 보통 함수안에서 다른 함수를 호출해 그 함수를 실행후 다시 메인함수로 복귀하여 다시 메인 함수를 진행하는 식인데 코루틴 함수는 내가 지금까지 공부한 것과는 다르게 작동한다. 메인함수에서 호출시 다른 함수처럼 서브 함수라는 개념이 아니라 같이 작동한다. 메인 함수와 같이

알기 쉽게 예를 들자면 MMORPG 게임에서 내가 움직임과 동시에 다른 플레이어가 움직이는게 Coroutine 함수라고 볼수 있다. Routine 앞에 Co를 붙여 Coworker(동료) 와 같이 함께 한다는 의미로 보면된다.

함수 예시 

위 함수를 보면 보통 Use()라는 함수에서 Unity에서는 함수를 호출할때 Swing() 이런식이나 Invoke 함수라면 Invoke("Swing",시간) 이런식으로 호출 하겠지만은 코루틴 함수를 호출하는 방식은 StartCoroutine("함수명") 이런식으로 호출한다. 코루틴 함수를 선언할때도 보통과 다르게 IEnumerator(열거형) 함수() 이런식으로 호출한다.

코루틴 함수에서는 C언어의 Sleep과 같은 개념으로 yield를 통해 시간차를 둘 수 있다. 이 개념을 통하여 Invoke 함수가 많이 사용되는것을 막고 간단하게 정리할 수 있는 장점이있다.

밑에 그림은 대충 코루틴 함수가 작동하는 형식을 내가 그린것이다. 정확하게 맞는지는 모르겠지만 내가 이해한 방식을 그림으로 그려놓은것이니 참고만 하기바란다.

 

'프로그래밍 > Unity' 카테고리의 다른 글

Unity) C#. Foreach문  (0) 2020.12.30
Unity) Ray 와 RayCast  (0) 2020.12.29
Unity) Particle System이란?  (0) 2020.12.28
Unity) is Kinematic  (0) 2020.12.27
Unity) Continuous의 개념  (0) 2020.12.27