본문 바로가기
유니티 공부

Coroutine (코루틴) (feat.TIL)

by g-builder 2024. 9. 13.

오늘은 1주일동안의 강의에서 배운내용을 사용하는 미니프로젝트를 끝내고 발표가있었다.

발표는 팀원분이 맡아주셨고 발표도 하지않는 나도 괜히 긴장되었다.

그런데 다른팀들이 너무 잘하지 않는가!

 

물론 우리조도 우리조만의 특색도있고 다들 사이도 좋았고 매우만족한다.

1주일간의 미니프로젝트였지만 대만족이다.

그리고 발표를 하는도중 코루틴을 많이 쓰는걸보고 오늘은 코루틴에 대해 복습해봐야겠다고 생각한다.

왜 복습이냐고? 사실 졸업작품 요시랜드를 만들때 코루틴을 굉장히 많이썻던 기억이 있기때문.

지금은...잘 기억안난다...

하지만 다시 공부하면되지.

 

본문으로와서 코루틴이란?

내가 가진 지식으로 가볍게 설명하자면

원하는곳에서 원하는 시간에 반복을 시킬 수 있는 메서드이다.

 

유니티 메뉴얼에 나와있는 내용을 긁어오자면 아래와 같다.

코루틴

코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있습니다. Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드입니다.

대부분의 경우 메서드를 호출하면 실행을 완료한 뒤 호출한 메서드에 제어와 선택적 반환 값을 반환합니다. 즉 메서드 내에서 발생한 모든 행동은 단일 프레임 업데이트 내에서 발생해야 합니다.

시간의 흐름에 따른 이벤트의 시퀀스나 절차상의 애니메이션을 포함하기 위해 메서드 콜을 사용하고자 하는 상황에서 코루틴을 사용할 수 있습니다.

하지만 코루틴은 스레드가 아니라는 점을 명심해야 합니다. 코루틴의 동기 작업은 여전히 메인 스레드에서 실행됩니다. 메인 스레드에 소요되는 CPU 시간을 줄이려면 다른 스크립트 코드에서와 마찬가지로 코루틴의 작업 차단을 방지하는 것이 중요합니다. Unity 내에서 다중 스레드 코드를 사용하려면 C# 잡 시스템을 고려하십시오.

코루틴은 HTTP 전송, 에셋 로드, 파일 I/O 완료 등을 기다리는 것과 같이 긴 비동기 작업을 처리해야 하는 경우 코루틴을 사용하는 것이 가장 좋습니다.

(출저 - https://docs.unity3d.com/kr/2022.3/Manual/Coroutines.html)

 

 

 

코루틴을 어디에 사용할수있느냐 하면

굳이 업데이트함수에서 할필요없이 다른곳에서도 계속 코드를 반복시켜줄 수 도 있고

WaitForSeconds를써서 시간을 지연시킬수도있다. 

그외에도 다양한곳에 사용이 가능하다.

 

물론 이정도 내용만으론 공부가 턱없이 부족하다!

자주 같이쓰이는 IEnumerator도 언젠간 공부해내고말겟다.

 

모두들 프로젝트 준비하느라 고생많으셨고 앞으로도 잘부탁드립니다!