2014. 7. 2. 15:33ㆍ프로그래밍/Coroutine
유니티에서 코루틴은 쉽게 사용할 수 있는 서브루틴이라는 점에서 매우 다양하게 활용할 수 있다.
메인 루틴 하나만 사용할 때와는 확연히 다른 창작이 시작된다.
물론 무한루프 코루틴이 잡아먹는 비용이라던가, 문제점도 있지만
활용하기에 따라 프로그래머가 다양한 연출을 할수 있는 기능이다.
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 |
비동기 작업이 끝날 때까지 대기 ( 씬로딩 ) |
이런 내용들이있다. 상황에 맞게 바꿔쓰자.
'프로그래밍 > 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 |