Unity에서 반복되는 행위는 보통 Update 메소드 내에서 처리를 합니다. 하지만 만약 반복 중에 대기시간이 필요하다면 Update 메소드 내에서 처리하는 건 무리가 있습니다. 대기하는 동안 다른 동작들 역시 다 멈춰버리기에 특정 행위만 대기시간을 갖게 하거나 대기에 따른 특정 이벤트를 처리하고 싶다면 Coroutine 코루틴을 활용하시면 됩니다.
Coroutine 코루틴의 주요 특징
1. 비동기 실행: 코루틴은 비동기적으로 실행됩니다. 위 이미지에서 보듯 복잡한 작업을 게임의 메인 루프와 독립적으로 수행할 수 있습니다.
2. 시간 지연 및 대기: 코루틴 내부에서 yield 키워드를 사용하여 시간 지연을 하거나, 특정 조건이 충족될 때까지 대기할 수 있습니다.
3. 프레임 조절: 코루틴은 프레임마다 실행되기 때문에, 복잡한 연산을 분산하여 프레임 드랍을 방지하거나 성능을 향상시킬 수 있습니다.
4. 중단과 재개: 코루틴은 실행 중간에 일시 중단하고 다시 재개할 수 있습니다. 이는 작업을 조각조각으로 나누어 처리할 때 유용합니다.
코루틴 사용 방법
기본 원형은 위 이미지와 같습니다. 함수 선언하듯 하시되 기본적으로 반환형은 IEnumerator입니다. 더불어 내부에서 반환형에 따른 yield return .... 을 반환해야합니다.
플레이어가 대쉬를 했을 경우를 예제로 코루틴을 작성해 보겠습니다.
만약 코루틴이 아니라면 대쉬 딜레이에 따른 시간을 따로 체크해야 하지만 코루틴은 WaitForSeconsd()를 통해서 해당시간동안 대기할 수 있습니다.
또는 시간에 따라 회복되는 hp나 게이지를 표현하기에도 적합합니다.
비동기적으로 처리해야할 행위가 있거나 시간 제어가 필요하다면 Coroutine 코루틴을 활용해 보시길 바랍니다.
'Unity 유니티' 카테고리의 다른 글
Unity 유니티 프리팹이란?? Prefab?? (0) | 2024.04.01 |
---|---|
Unity 유니티 비쥬얼 스튜디오 편집기 업데이트 (0) | 2023.10.13 |
유니티 게임 오브젝트란? unity GameObject (0) | 2023.08.23 |
unity 유니티 오류 Scene '...' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded. (0) | 2023.08.22 |
Unity 자동 완성이 안된다면?? 유니티 비주얼 스튜디오 연동 (0) | 2023.08.15 |
댓글