본문 바로가기
Unity 유니티

유니티 코루틴?? Unity Coroutine?? hp회복 예

by 지나팩 2023. 8. 29.

Unity에서 반복되는 행위는 보통 Update 메소드 내에서 처리를 합니다. 하지만 만약 반복 중에 대기시간이 필요하다면 Update 메소드 내에서 처리하는 건 무리가 있습니다. 대기하는 동안 다른 동작들 역시 다 멈춰버리기에 특정 행위만 대기시간을 갖게 하거나 대기에 따른 특정 이벤트를 처리하고 싶다면 Coroutine 코루틴을 활용하시면 됩니다.

Coroutine 코루틴의 주요 특징

1. 비동기 실행: 코루틴은 비동기적으로 실행됩니다. 위 이미지에서 보듯 복잡한 작업을 게임의 메인 루프와 독립적으로 수행할 수 있습니다.

2. 시간 지연 및 대기: 코루틴 내부에서 yield 키워드를 사용하여 시간 지연을 하거나, 특정 조건이 충족될 때까지 대기할 수 있습니다.

3. 프레임 조절: 코루틴은 프레임마다 실행되기 때문에, 복잡한 연산을 분산하여 프레임 드랍을 방지하거나 성능을 향상시킬 수 있습니다.

4. 중단과 재개: 코루틴은 실행 중간에 일시 중단하고 다시 재개할 수 있습니다. 이는 작업을 조각조각으로 나누어 처리할 때 유용합니다.

 

 

코루틴 사용 방법

기본 원형은 위 이미지와 같습니다. 함수 선언하듯 하시되 기본적으로 반환형은 IEnumerator입니다. 더불어 내부에서 반환형에 따른 yield return .... 을 반환해야합니다.

 

 

플레이어가 대쉬를 했을 경우를 예제로 코루틴을 작성해 보겠습니다.

만약 코루틴이 아니라면 대쉬 딜레이에 따른 시간을 따로 체크해야 하지만 코루틴은 WaitForSeconsd()를 통해서 해당시간동안 대기할 수 있습니다.

 

 

또는 시간에 따라 회복되는 hp나 게이지를 표현하기에도 적합합니다.

비동기적으로 처리해야할 행위가 있거나 시간 제어가 필요하다면 Coroutine 코루틴을 활용해 보시길 바랍니다.

댓글