■ 코루틴 개념
○ 코루틴(Coroutine) 설명
- 비동기적으로 실행되는 함수
- 특정 조건을 만족할 때까지 실행을 잠시 멈췄다가 다시 이어서 실행할 수 있는 기능
- 코루틴은 비동기 작업을 처리할 때 매우 유용하며, 게임 내에서 다양한 시간 제어 및 비동기 로직을 구현하는 데 효과적
- 예를 들어, 시간이 지날 때까지 대기하거나, 특정 조건이 충족될 때까지 기다리는 등의 작업을 수행할 때 유용하게 사용
- 활용법 : 유니티에서 코루틴을 사용하면 게임 오브젝트의 상태를 관리하거나 애니메이션, 이벤트 처리 등을 효율적으로 할 수 있음
○ 코루틴의 기본 구조
- 코루틴은 IEnumerator 타입의 반환형을 가지며 yield return 문을 사용해 실행을 중지하거나 재개할 수 있음
using UnityEngine;
using System.Collections;
public class CoroutineExample : MonoBehaviour
{
void Start()
{
StartCoroutine(PrintNumbers());
}
IEnumerator PrintNumbers()
{
for (int i = 1; i <= 5; i++)
{
Debug.Log(i);
yield return new WaitForSeconds(1f); // 1초 대기
}
}
}
- 위 코드에서는 PrintNumbers 코루틴이 1초마다 숫자를 출력하는 예제입니다.
yield return new WaitForSeconds(1f);
문으로 인해 1초씩 기다린 후에 다음 숫자를 출력하게 됩니다.
○ yield
yield return new WaitForSeconds(seconds)
: 지정한 시간 동안 대기합니다.
yield return null
: 다음 프레임까지 대기합니다.
yield return new WaitUntil(predicate)
: 특정 조건이 참이 될 때까지 대기합니다.
yield return new WaitWhile(predicate)
: 특정 조건이 거짓이 될 때까지 대기합니다.
yield return new WaitForFixedUpdate()
: 유니티의 고정된 업데이트 주기(FixedUpdate) 이후까지 대기하도록 합니다. 다음 코루틴 동작이 다음 FixedUpdate까지 기다리게 됩니다.
yield return StartCoroutine(string)
: 다른 코루틴을 호출하고 완료될 때까지 기다립니다. 해당 코루틴이 완료되면 다시 이어서 진행됩니다. 이렇게 하면 다른 비동기 작업을 순차적으로 연결할 수 있습니다.