IT/Unity

[Unity_기본] 코루틴(Coroutine)

배당 줍는 다람쥐 2021. 9. 30. 16:35
반응형

유니티 함수는 게임 오브젝트가 활성화된 상태에서 매 프레임 호출되어 수행된다.

따라서, 대부분의 게임 동작을 Update 함수에서 작동하도록 구현한다.

 

그러나, Update 함수는 멈추지 않고 계속 동작하기 때문에,

일시적으로 동작해야 하는 상황과 다른 동작이 처리되는 것을 기다리는 기능을 구현하기 어려움

 

코루틴 함수 구현하기

// 반환형을 IEnumerator로 만들면 된다.

IEnumerator CountAttackDelay()
{
	// yield return : 코루틴에서 동작하는 제어권을 유니티에 돌려준다는 의미
	// 반환 타입으로 정의한만큼 코드 동작을 중지하고, 조건이 충족되면 다음줄부터 다시 코루틴이 동작
	yield return new WaitForSeconds(delayTime);
	isDelay = false;
    
	// 반환 타입에는 여러 가지가 존재
	yield return null; // 1 프레임 기다림
	yield return new WaitForSeconds(1f); // 실제 시간으로 1초를 기다림(time scale에 영향받지 O)
	yield return new WaitForSecondsRealtime(1f); // 실제 시간으로 1초를 기다림(time scale에 영향받지 X)
	yield return new WaitForFixedUpdate(); // 다음 FixedUpdate 끝날 때까지 기다림
	yield return new WaitForEndOfFrame(); // 다음 프레임의 Update와 모든 렌더링이 끝날 때까지 기다림
}

public void CoroutineTest()
{
	// 아래와 같이 사용하면 된다.
	StartCoroutine(CountAttackDelay());
}
반응형

'IT > Unity' 카테고리의 다른 글

[Unity_Script] Awake, Start, OnEnable, OnDisable  (0) 2021.09.30