코루틴(Coroutine)이란? Update()와 차이
Coroutine 선언
IEnumerator 함수이름(){
}
void Start(){
StartCoroutine("함수이름");
//StartCoroutine(함수이름());
}
코루틴용 데이터 |
엔진이 수행하는 기능 |
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 |
비동기 작업이 끝날 때까지 대기 ( 씬로딩 ) |
일반 메소드처럼 사용 할 수 있지만, Update()와 적절히 섞어서 쓰면 프로그램 성능을 높일 수 있다.
void Update(){
time += Time.deltaTime;
if(time > 3)
// 할일
}
// 성능에 따라서 3초간 수십번을 호출을 하고 if문에서 체크를 한다.
void Start(){
StartCoroutine("TimeCheck");
}
IEnumerator TimeCheck(){
yield return new WaitForSeconds(3f);
//할일
}
// 1번 호출 후 yield return new WaitForSeconds(3f);에 의해 3초간 대기 후 할일을 한다.
내가 생각하는 주로 하는 역활
Update() : 지속적이며 불규칙한 호출이 필요한 경우
Coroutine() : 일정 규칙적으로 호출이 필요한 경우
Tip.
StartCoroutine의 사용방법은
1. StartCoroutine( " MethodName " );
2. StartCoroutine( MethodName() );
이 있는데, 1번과 같이 사용할 경우 다른 위치에서 StopCoroutine( " MethodName " ); 으로 Stop이 가능함.
참조 사이트 : http://www.unitystudy.net/bbs/board.php?bo_table=writings&wr_id=43
'프로그래밍 > C#' 카테고리의 다른 글
Invalid rank specifier: expected `,' or `]' (0) | 2015.02.16 |
---|---|
java.lang.IllegalStateException: Could not execute method of the activity (0) | 2014.11.25 |
error CS1519: Unexpected symbol `for' in class, struct, or interface member declaration (0) | 2014.11.04 |
자기상위오브젝트(parent object)를 호출하는 방법! (0) | 2014.01.24 |
[C#] MemoryPool(메모리풀) (0) | 2014.01.08 |