유니티 코루틴이란 비동기 실행, 게임의 메인 루프와 별개로 실행되며, 여러 프레임에 걸쳐 실행할 수 있도록 하는 강력한 기능이다. 코루틴을 사용하면 복잡하거나 시간이 걸리는 작업을 수행하면서도 게임의 프레임 레이트를 유지할 수 있다. 이는 게임의 응답성을 떨어뜨리지 않으면서 긴 작업을 처리할 수 있도록 해준다.
* 장점?
코루틴은 유니티에서 비동기 작업을 처리하는데 매우 유용한 기능이며, 게임의 흐름을 방해하지 않으면서도 필요한 작업을 수행할 수 있게 해준다.
* 비동기 작업
비동기 작업(Asynchronous Task)은 프로그래밍에서 두 가지 작업이 독립적으로 실행될 수 있게 하는 개념이다. 즉, 한 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 진행할 수 있게 한다. 비동기 작업은 주로 프로그램의 효율성을 높이기 위해서 사용한다.
* 언제 사용하면 유용한지?
- 시간 지연 작업
게임 로직에서 특정 시간 간격으로 이벤트를 발생시킬 때 유용하다. 플레이어가 특정 기술을 사용한 후 재사용 대기시간을 갖게 하거나, 적이 일정 시간마다 공격하도록 하는 기능에 유용하다.
- 애니메이션 시퀀스
- 비동기 로딩
리소스 등을 코루틴으로 로딩하여, 게임이 멈추지 않고 계속 실행되어야 할 때
* 코루틴과 멀티 프로세스, 멀티 스레드와의 관계?
유니티의 코루틴과 멀티 프로세싱(multi-processing) 또는 멀티 스레딩(multi-threading)은 근본적으로 다른 개념이다. 코루틴과 멀티 스레딩 모두 비동기 작업을 용이하기 하는 방법이긴 하지만, 구현 메커니즘과 사용 목적에서 차이가 있다.
코루틴은 단일 스레드 내에서 동작하며, 비동기적인 행동을 모방한다. 코루틴은 멀티 스레딩을 사용하지 않으며, 모든 작업은 유니티의 메인 스레드에서 순차적으로 실행된다.
멀티 프로세싱이나 멀티 스레딩은 여러 개의 스레드가 동시에 실행되어 여러 작업을 병렬로 처리할 수 있게 한다. 이를 통해 CPU의 멀티 코어를 효과적으로 활용하며 처리 능력을 크게 향상시킬 수 있다. 멀티 스레딩은 복잡한 계산, 데이터 로딩, 네트워크 통신과 같이 많은 시간이 소요되거나 메인 게임 플레이와 독립적으로 실행되어야 하는 작업에 효과적이다.
코루틴은 멀티 스레딩이 아니지만, 복잡하고 긴 작업을 여러 프레임에 걸쳐 나누어 처리하여 게임의 반응성을 유지하는 데 유용하다. 멀티 스레딩은 계산 작업을 병렬로 처리하여 성능을 향상시킬 때 사용한다.
* 결론
코루틴은 유니티 내에서 시간에 따른 작업을 관리하는 강력한 도구이다. 멀티 스레딩은 완전히 다른 목적으로 사용되며, 특히 성능 최적화가 필요한 복잡한 처리를 동시에 수행해야 할 때 유리하다. 유니티에서는 주로 System.Threading 네임 스페이스를 사용하여 멀티 스레딩을 구성하고, 코루틴은 게임 로직의 순차적인 진행과 비동기 처리에 활용된다.
'게임개발 > 스터디' 카테고리의 다른 글
[스터디] 사용해 본 디자인 패턴 정리 (0) | 2024.05.13 |
---|---|
[스터디] GC란? (0) | 2024.05.12 |
[스터디] 인터페이스 vs 추상 클래스 차이 (0) | 2024.05.12 |
[스터디] UI관련 최적화 한 것 (0) | 2024.05.12 |
[스터디] 팩토리 패턴이란? (0) | 2024.05.12 |