본문 바로가기

Unity

[Unity] 코루틴이 뭐야?

728x90

문제

 생성 직후부터 총 8초에 걸쳐 서서히 나타났다가 서서히 없어지는 것을 반복하는 적이 있다고 할 때 어떻게 적을 구현할 것인가?

 

해결 방법과 코루틴 설명

 Update 함수를 사용하여 매프레임에 걸쳐 적의 SpriteRenderer를 통해서 알파값을 조정해주는 방법으로 해결할 수 있습니다.

 

위의 방법 매프레임마다 구현된 함수를 호출해야하므로 시스템 과부하를 초래할 수 있습니다.

 

 FadeIn(적이 나타나는 함수), FadeOut(적이 사라지는 함수)를 만들어 Invoke 함수를 통해서 FadeIn-FadeOut-FadeIn-FadeOut을 계속하여 도는 구조로 만들어 해결할 수 있습니다.

 

위의 방법은 Invoke 함수에 주기도 설정해주어야하고, Invoke 함수는 함수에 인자를 전달할 수도 없기 때문에 이로 인해서 코드가 구조적으로 복잡하게 짜여질 것입니다.

 

따라서 이때 사용가능한 것이 바로 코루틴입니다.

 

코루틴이란?

유니티 메뉴얼에서는 코루틴은 "실행을 중지하여 Unity에 제어권을 돌려주고, 계속할 때는 다음 프레임에서 중지한 곳부터 실행을 계속할 수 있는 기능입니다."이라고 설명합니다.

 

코루틴 실행

 

코루틴은 단일 쓰레드로 동작하는 유니티를 멀티 쓰레드처럼 보이게 해주는 기술입니다. 위의 그림처럼 코루틴은 Update 과정에서 코루틴으로 통제권이 넘어갔다가 다시 Update로 돌아오는 형태를 보입니다.

 

코루틴을 적용한 예제입니다.

https://hangjastar.tistory.com/84

 

[전투 시스템] Unity: 적 컨트롤러 만들기 (2)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46   IEnumerator EnemyControl()     {         while (tru..

hangjastar.tistory.com

유니티 매뉴얼입니다.

https://docs.unity3d.com/kr/2018.1/Manual/Coroutines.html

 

코루틴 - Unity 매뉴얼

함수를 호출하면 값을 반환하기 전에 실행 완료됩니다. 이는 함수에서 수행되는 모든 액션이 하나의 프레임 업데이트 내에서 발생해야 한다는 것을 의미합니다. 시간이 지남에 따라 절차식 애��

docs.unity3d.com

 

728x90