코루틴 (Coroutine)

JMG·2023년 10월 31일

순차대로 수행하지 않아도 됨: 비동기적 실행 방식

  • 스레드가 아닌 단일 동작이지만 여러 처리를 빠르게 왔다갔다 하면서 처리하므로 병렬 처리가 이루어지는 것처럼 보임
  • 많이 쓰는 것은 좋지 않으나 유용함
private void Start() {
	StartCoroutine(CoroutineTest());
}

private IEnumerator CoroutineTest() {
	Debug.Log($"1 : {Time.realtimeSinceStartup}");
    yield return null;
	Debug.Log($"2 : {Time.realtimeSinceStartup}"); // 1과 1프레임 차이
    yield return new WaitForSeconds(1f);
	Debug.Log($"3 : {Time.realtimeSinceStartup}"); // 약 1초 정도 대기 후 실행
}

몇 초 대기하고 음악 틀고 영상 트는 등의 작업에 유용

코루틴 작업을 정지할수도 있음

private void Start() {
	Coroutine coroutine = StartCoroutine(CoroutineTest());
    StartCoroutine("CoroutineTest");
    StopCoroutine(coroutine);
}

코루틴 함수 내에 코루틴 호출 가능

private void Start() {
	StartCoroutine(CoroutineTest());
}

private IEnumerator CoroutineTest() {
	yield return StartCoroutine(CoroutineTest2()); // Interval 넣을 수 있음
}
profile
DIY Coding

0개의 댓글