유니티에서 특정 코드가 반복적으로 실행되기 위해서는 Update문에 코드를 작성하면 되는데,
Update가 아닌 곳에서도 반복적으로 코드가 실행되어야할 필요가 있을 때가 있다.
이때 코루틴을 사용하는 것이 좋다.
또한, 업데이트문을 사용하면 원하든 원하지 않든 업데이트문이 매 프레임마다 계속 반복적으로 실행되지만,
코루틴을 사용한다면 자신이 필요한 순간에만 반복하고 필요하지 않을 때에는 전혀 사용하지 않음으로써
자원관리를 매우 효과적으로 할 수 있다.
당장 실행되는게 아니라 일정 시간동안 멈춰있다가 그 뒤에 동작하게 하거나
특정 조건을 부여해서 코드가 실행되도록 할 수도 있다.
코루틴 사용방법
코루틴은 IEnumerator라는 반환형으로 시작한다.
yield retrun이 반드시 함수 내부에 존재한다.
기본 형식
IEnumerator 함수이름()
{
yield return // + 조건
// 함수 내용
}
StartCoroutine(함수이름());
StartCoroutine("함수이름");
위 2가지 방법으로 사용이 가능하다
yield return 의 종류
1. yield return null; : 다음 프레임에 실행 됨.
yield return new WaitForSeconds( float ); : 매개변수로 입력한 숫자에 해당하는 초만 큼 기다렸다가 실행됨. (유니티 상 시간 기준)
yield return new WaitForSecondsRealtime( flaot ); : 매개변수로 입력한 숫자에 해당하는 초만큼 기다렸다가 실행됨.(현실 시간 기준)
yield return + new WaitForFixedUpdate / WaitForEndOfFrame 등등
yield break;
매개변수가 존재하는 코루틴을 쓸때는 어떻게 호출을 해야할까?
StartCoroutine( 메서드이름( 매개변수1, 매개변수2 ) );
StartCoroutine( "메서드이름", 매개변수 );