본문 바로가기

Unity/Tips

[Unity] - Coroutine

728x90
반응형

 

 

코루틴(Coroutine)

 

  • 반환형은 IEnumerator (코루틴 함수는 반환형을 IEnumerator로 만든다 -라고 생각하자.)
  • 코루틴 함수 내부에는 yield return을 꼭 적어줘야 한다.
  • yield return : 코루틴에서 동작하는 제어권을 유니티에 다시 돌려준다.
  • yield return에 도착하게 되면 yield return 뒤에 명시된 순간만큼 코드 동작을 중지하고, 제어권을 유니티에 돌려준다.
  • 명시된 순간이 끝나면 다음 줄부터 다시 코루틴이 시작
  • 코루틴을 호출하기 위해서는 StartCoroutine으로 호출해야한다. ex) StartCoroutine(함수명());

  • 코루틴은 Start()함수가 호출된 이후에, gameObject가 활성화된 상태에서 호출해야한다.
  • 코루틴 내부에서 무한루프를 만들면 안된다.

 

 

코루틴 중단

  • StopCoroutine()으로 중지 할 수 있다.
  • "함수명"으로 지정을 하거나, IEnumerator 변수를 만들어 코루틴 함수를 변수화 해준 후, StopCoroutine()을 해준다.
  • "함수명"으로 StopCoroutine()을 사용하면 같은 이름의 여러개 코루틴이 한번에 중지하게 된다.
  • StopAllCoroutines() - 컴포넌트가 실행하고 있는 모든 코루틴을 중단시킨다.
  • 코루틴에도 매개변수를 사용할 수 있다.

 

 

yield return

  • yield return : 코드의 제어권을 유니티 엔진에 잠시 넘겼다가 특정 시점이 되면 다시 받아서 코드를 진행
  • null : 1 프레임 동안 기다린다.
  • WaitForSeconds : 생성자의 매개변수로 넣어준 시간만큼 기다린다.
  • WaitForFixedUpdate : FixedUpdate 과정이 끝난 후에 제어권을 돌려받는다.
  • WaitForEndOfFrame은 Update는 물론 화면을 렌더링 하는 과정 등, 한 프레임이 지나가는 과정 전체가 끝난 뒤, 가장 마지막에 제어권을 돌려받는다.

 

 

 

yield break

  • yield break : 그 시점에 코루틴을 완전히 멈춰버린다.

 

 

 

 

 

 

유니티 - 매뉴얼: 코루틴(Coroutine)

게임 오브젝트 생성 및 삭제 특수 폴더와 스크립트 컴파일 순서 코루틴(Coroutine) 함수를 호출하면 반환값을 반환하기 전에 실행 완료됩니다. 즉, 함수에서 수행되는 작업은 하나의 프레임에서 수

docs.unity3d.com

 

 

 

 

 

 

728x90