Unity

코루틴(Coroutine)

에린_1 2024. 11. 21. 22:09
728x90

코루틴(Coroutine)

  • 특정 작업을 여러 프레임에 걸쳐 실행할 수 있도록 지원하는 기능이다.
  • Unity에서 시간 지연이나 비동기적 작업을 쉽게 처리할 수 있게 해주며, 주로 애니메이션, 타이머, 지연 실행 같은 작업에서 많이 사용된다.
  • 일반적인 함수와 달리, 호출 시 즉시 종료되지 않고 중간에 실행을 멈추고 나중에 다시 재개될 수 있는 함수이다. Unity에서는 주로 특정 지연 작업이나 프레임 기반의 반복 작업을 처리할 때 코루틴을 사용한다.
  • C#에서는 IEnumerator를 반환하는 함수로 코루틴을 구현하며, 이 함수는 특정 시점에서 실행을 멈추고 다음 프레임 또는 지정된 시간이 지나면 다시 실행된다.

특징

  • 비동기적 실행 : 다른 작업을 블로킹 하지 않고 비동기적으로 실행되므로, 프레임 드롭없이 지연이나 반복 동작을 처리할 수 있다.
  • 중단 및 재개 : yield 키워드를 사용하여 코루틴을 특정 시점에서 중단하고, 이후 조건이 충족되면 재개할 수 있다.
  • 메인 스레드 : 코루틴은 Unity의 메인 스레드에서 실행되므로, Unity 엔진 API에 안전하게 접근할 수 있다.

코루틴의 장점과 단점

  • 장점
    • 간결한 비동기 코드 : 코루틴을 사용하면 시간 지연이나 반복적인 비동기 작업을 간결하게 표현할 수 있다.
    • 가독성 향상 : 비동기적 작업을 콜백 대신 순차적 코드로 표현할 수 있어 코드 가독성이 높아진다.
    • Unity 엔진과 통합 : 코루틴은 Unity의 메인 스레드에서 실행되므로 Unity의 객체와 안전하게 상호작용할 수 있다.
  • 단점
    • 메인 스레드 사용 : 메인 스레드에서 실행되므로, 긴 작업을 코루틴으로 처리하면 프레임 드롭이 발생할 수 있다. 무거운 연산은 별도의 스레드를 사용하는 것이 바람직하다.
    • 수동 관리 필요 : 코루틴을 실행하면, 수동으로 중단하거나 조건을 관리해야 하는 경우가 많아 관리가 복잡해질 수 있다.
    • 의존성 증가 : 코루틴은 Unity 환경에 의존적이기 때문에, 다른 엔진이나 플랫폼에서 코드의 재사용성이 낮다.
 
728x90