티스토리 뷰
코루틴(Coroutine)이 뭔가요?
C 언어등에서 일반적으로 사용하는 함수는 시작할 때 진입하는 지점이 하나 존재하고 함수가 모두 실행되거나, return 구문에 의해서 종료되는 지점을 설정할 수 있습니다. 이러한 함수를 서브루틴(Subroutine)이라 부르는데, 코루틴은 이를 더 일반화한 개념으로 진입하는 지점까지 여러 개를 가질 수 있는 함수를 의미합니다. 개념적으로만 본다면 서브루틴도 코루틴의 한 종류라고 볼 수 있겠지요.
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() );
'C#' 카테고리의 다른 글
나눗셈보다 곱셈 연산속도에 대한 자료 (0) | 2017.01.11 |
---|---|
자료형 단위 L D F U M UL(!) (0) | 2016.12.31 |
CSV to Json, JsonParser, logcat (0) | 2016.12.12 |
[Unity C#] 기기 로케일 가져오기 (0) | 2016.12.12 |
[C#] SHA1 MD5 암호화 기법 간단하고 강력하게 !* (0) | 2016.10.07 |