[TIL] 비동기 프로그래밍(UniTask)
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
Unity에 최적화된 Zero Allocation 비동기 프로그래밍 라이브러리
코루틴의 한계
UniTask의 해결책
promise 객체는 비동기 작업의 미래 결과를 담는 그릇으로 "나중에 값을 줄게"라는 약속이라고 생각하면 됨
1. Zero Allocation
struct 기반 UniTask로 Task 객체 할당을 없애고, async 상태머신의 promise 객체를 풀링·재사용해 신규 GC 할당을 제로로 만듦.
2. Unity PlayerLoop 통합
UniTask는 Unity의 PlayerLoop에서 직접 실행됨.
3. 완벽한 async/await 지원
async/await 키워드 사용| 구분 | 코루틴 | UniTask |
|---|---|---|
| 할당 | 적음 | 없음 (Zero) |
| 성능 | 보통 | 빠름 |
| 반환값 | ❌ | ✅ |
| 예외 처리 | ❌ | ✅ |
| 취소 | StopCoroutine | CancellationToken |
| 타입 안정성 | ❌ | ✅ |
| Unity 통합 | ✅ | ✅ |
UniTask핵심 API 종류
서로 다른 객체가 서로의 상태를 알아야하는 상황은 굉장히 자주 나오고, 어찌보면 객체지향 프로그래밍의 대부분의 고민이 여기서 비롯되는 것도 같다. 내가 지금껏 개발하며 사용한 패턴이나 전략들의 장단점을 모았다. 싱글턴 클래스 개념 단 한 개의 인스턴스만 존재하도록 하면서, static 으로 전역적인 접근이 가능하도록 하는 클래스. 장점 구현이 매우 빠르다.
Ambient color란? 씬(Scene) 전체에 균일하게 적용되는 배경 조명색 Window Rendering Lighting Environment 탭에서 설정할 수 있다 현재 진행중인 프로젝트에서 낮과 밤 시스템이 있는데 Ambient Color를 통해 밤에 더 어두운 느낌을 줄 수 있었다