[Unity] Coroutine과 사용 사례

지즈·2024년 12월 26일
0

Unity

목록 보기
5/17

코루틴이란?

코루틴은 IEnumerator를 반환하는 함수다. yield 키워드를 사용하여 실행을 일시 중단하고, 특정 조건이 충족되면 다시 실행을 시작한다.

페이드 효과나, 로딩 화면의 프로그래스 바 업데이트 등 비동기적 처리에 사용된다.

예시 1

IEnumerator MyCoroutine() {
    Debug.Log("코루틴 시작!");
    yield return new WaitForSeconds(1f); // 1초 대기
    Debug.Log("1초 후 실행!");
}
...
void CallCoroutine()
{
	StartCoroutine(MyCoroutine()); // 코루틴 호출
}

Yield란?

yield return을 사용하여 코루틴의 실행을 일시 정지한다. 다양한 대기 조건이 있다.

WaitForSeconds : 지정된 시간 동안 대기
WaitForEndOfFrame : 프레임이 끝난 후에 실행
WaitForFixedUpdate : 다음 FixedUpdate() 후에 실행
null : 다음 프레임에 실행

다음은 코루틴에 대한 더 자세한 설명이다.

코루틴의 내부 동작 원리

유니티의 코루틴은 UnityEngine.GameObjectMonoBehaviour (스크립트)에 의존한다. 이는 코루틴이 게임 오브젝트에 의해 실행되고, 이 오브젝트가 사라지거나 비활성화 되면 자동으로 중단된다는 것이다.

코루틴은 비동기적으로 실행되지만 별도의 스레드에서 실행되진 않는다. 즉, 멀티 스레드 작업이 아니라는 뜻이다. 유니티의 메인 스레드(Main Thread) 안에서 메인 스레드의 시간을 나눠서 실행되며, 단지 실행을 일시 정지 했다가 다시 시작하는 것처럼 동작한다. 그러므로, 복잡한 계산이나 CPU를 많이 사용하는 파일 처리나 물리 시뮬레이션 등의 작업에는 적합하지 않게 된다.

profile
클라이언트 개발자가 되는 그 날까지 킵 고잉

0개의 댓글