<aside> <img src="/icons/exclamation-mark_gray.svg" alt="/icons/exclamation-mark_gray.svg" width="40px" /> 코루틴이란?


시작과 끝이 항상 동일한 프레임에 발생해야하는 일반적인 메서드들과 달리, 작업을 여러 프레임에 분산시킬 수 있는 특별한 메서드

</aside>

<aside> <img src="/icons/info-alternate_gray.svg" alt="/icons/info-alternate_gray.svg" width="40px" /> 코루틴이 사용되는 상황


보통 코루틴은 특정 행동을 지연시킬 때 사용하게 된다.

Update에서 시간을 지연시키는 행동을 하게 되면

currentTime = Time.deltaTime

이라는 코드를 매 프레임마다 실행시켜줘야 한다.

⇒ 비효율적인 코드가 된다.

이러한 상황속에서 코드의 비효율적인 부분을 고칠 수 있는 것이 코루틴이다.

</aside>

<aside> <img src="/icons/flag-swallowtail_gray.svg" alt="/icons/flag-swallowtail_gray.svg" width="40px" /> 코루틴의 선언 방법


코루틴을 선언할 때는 앞에 IEnumerator를 붙여야 한다.

IEnumerator TimeCheckCoroutine()
{
		//code
		yield return new WaitForSeconds(3f);
}

이후 코루틴 함수 내에 제어권을 돌려주는 yield return을 적어줘야 한다.

</aside>

<aside> <img src="/icons/checkmark-line_gray.svg" alt="/icons/checkmark-line_gray.svg" width="40px" /> 코루틴의 특징


<aside> <img src="/icons/code_gray.svg" alt="/icons/code_gray.svg" width="40px" /> 코루틴의 메서드


코루틴을 실행해주는 메서드이다.

해당 메서드를 호출한 객체가 실행된 코루틴의 소유권을 가진다.

실행중인 코루틴을 종료해주는 메서드이다.

소유권을 가진 코루틴 중 일치하는 코루틴을 종료시킨다.

현재 소유권을 가진 모든 코루틴을 종료시킨다.

</aside>

<aside> <img src="/icons/more_gray.svg" alt="/icons/more_gray.svg" width="40px" /> YieldInstruction


코루틴 내부에서 특정 조건이 충족될 때까지 코루틴을 일시 중지하고 유니티에 제어권을 반환할 것 인지를 정의하는 역할을 하는 클래스이다.

yield return의 종류


</aside>

last update : 2023-10-04