코루틴 Coroutine
유니티 Update( )함수는 게임의 지속적인 변화를 주거나 게임의 진행되는 매순간 체크(사용자의 입력 등)해야할 경우 사용하게 된다.
하지만 특정행동을 5초 동안 취해야 할 경우, 초당60~80(프레임)번 호출 되는 Update함수 안에서는 제어 하기가 힘들다.
그리고 플레이하는 디바이스마다 각각 다른 프레임이 나오기 때문에 구현 자체가 더더욱 힘들다.
그래서 C#과 유니티에서는 코루틴이라는 것을 제공한다.
유니티에서 사용할 것이기 때문에 유니티 코루틴을 알아보도록 하자
사용법
StartCoroutine
void 함수명( ) //Update안에 있는
{
StartCoroutine( 코루틴 함수 이름( ) );
}
IEnumerator
public IEnumerator 코루틴 함수 이름( ) //코루틴 사용
{
Debug.log(코루틴 대기);
yield return new WaitForFixedUpdate();
Debug.log(코루틴 완료);
}
코드분석
우선 StartCoroutine( ) 괄호안에 코루틴으로 IEnumerator 개채명, 지정한 함수이름을 써준다.
yield라는 것은 반복자의 IEnumerator객체에 값을 전달하거나, 반복의 종료를 알리기 위해 사용한다.
WaitForFixedUpdate( ); 다음 FixedUpdate 물리 프레임 전까지 대기
(코루틴 예외 : 함수안에서 만 사용, 알수 없는 이름의 함수(람다)에서는 에러)
코루틴용 데이터 | 엔진이 수행하는 기능 |
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 | 비동기 작업이 끝날 때까지 대기 |
참고 : https://docs.unity3d.com/kr/530/Manual/Coroutines.html
'유니티 > 레퍼런스' 카테고리의 다른 글
유니티,C#) 코루틴Coroutine 작동원리 (0) | 2019.02.23 |
---|---|
유니티) ScriptableObject (0) | 2019.02.14 |
유니티)플레이어프렙스 PlayerPrefs 데이터 저장하기 (0) | 2018.12.21 |
유니티) ScreenPointToRay 카메라로 부터의 스크린의 점 (1) | 2018.12.19 |
유니티) 레이케스트 Physics.Raycas, 콜라이더 검출하기 (0) | 2018.12.17 |