<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의 종류
yield return null
다음 프레임까지만 대기한다. [1프레임]
yield return new WWW(string)
웹 통신 작업이 끝날때까지만 대기한다.
yield return new WaitForSeconds(float)
지정한 시간까지만 대기한다.
yield return WaitForFixedUpdate()
다음 물리 프레임까지만 대기한다.
yield return new WaitForEndOfFrame()
모든 렌더링 작업이 끝날 때까지 대기한다.
yield return StartCoRoutine(string)
다른 코루틴이 끝날 때까지 대기한다.
yield return new AsyncOperation
비동기 작업이 끝날 때까지 대기한다.
</aside>
last update : 2023-10-04