코루틴 기본형태

2014. 7. 2. 15:33프로그래밍/Coroutine

반응형
SMALL

유니티에서 코루틴은 쉽게 사용할 수 있는 서브루틴이라는 점에서 매우 다양하게 활용할 수 있다.

 

메인 루틴 하나만 사용할 때와는 확연히 다른 창작이 시작된다.

 

물론 무한루프 코루틴이 잡아먹는 비용이라던가, 문제점도 있지만

 

활용하기에 따라 프로그래머가 다양한 연출을 할수 있는 기능이다.

 

  

 

 

public IEnumerator MethodName(float totalTime)
{
    yield return new WaitForEndOfFrame();
    float elapseTime = 0f;
  
    while(elapseTime < totalTime)
    {    

   elapseTime +=Time.deltaTime;
   if(elapseTime >= totalTime) elapseTime = totalTime;

         //시간동안 진행하고 싶은 작업
         yield return new WaitForEndOfFrame();
    }

    //시간지난후 진행하고 싶은 작업
}

 

코루틴의 기본형태는 IEnumerator 를 반환하는 함수형태로 작성된다.

 

1.작업처리 연산을 다음으로 미루는 양보구문

2.while문 안의 작업을 언제까지 처리할것인가 정하는 조건문

3.while문 안에 작업할 내용

4.1회전 이후 다시 연산을 다음으로 미루는 양보구문

 

위의 형태로 작성되었을 때 작업을 양보한 시간마다 1회전씩 서브루틴으로 동시에 작업되는 것처럼 처리된다.

 

양보구문에는 


코루틴용 데이터

엔진이 수행하는 기능

yield return null

다음 프레임까지 대기

yield return new WaitForSeconds(float)

지정된 초 만큼 대기

yield return new WaitForFixedUpdate()

다음 물리 프레임까지 대기

yield return new WaitForEndOfFrame()

모든 렌더링작업이 끝날 때까지 대기

yield return StartCoRoutine(string)

다른 코루틴이 끝날 때까지 대기

yield return new WWW(string)

웹 통신 작업이 끝날 때까지 대기

yield return new AsyncOperation

비동기 작업이 끝날 때까지 대기 ( 씬로딩 )


이런 내용들이있다. 상황에 맞게 바꿔쓰자.

 

 

 

반응형
LIST

'프로그래밍 > Coroutine' 카테고리의 다른 글

KhjCoroutines - AniSprite  (0) 2014.08.25
KhjCoroutines - DownMove  (0) 2014.07.31
KhjCoroutines - AlphaOnOffLoop  (0) 2014.07.31
KhjCoroutines - ScaleChange  (0) 2014.07.30
KhjCoroutines - AlphaChange  (0) 2014.07.29