반응형
<Unitask>
: 유니티용 async-await 통합 비동기 라이브러리 패키지. C#의 async-await를 유니티에 맞게 최적화하여 기본 Task보다 가볍고, 기존 C#의 Task/ValueTask/IValueTaskSource와 호환성이 뛰어납니다.
* 예시 코드
private UniTask WaitTouch()
{
_touchButton.gameObject.SetActive(true);
return _touchButton.OnClickAsync();
}
<Unitask의 특징>
- try-catch로 예의처리 가능합니다.
- 콜백 없이 작성하는 경우, 코드가 선형적으로 순서대로 실행되기 때문에 규칙성 있고 깔끔합니다.
- struct base : heap에 할당되지 않으므로 zero allocation.
- 유니티 메인 쓰레드(Player Loop) 기반으로 작업하여 코루틴을 대체(UniTask.Yield, UniTask.Delay, UniTask.DelayFrame)할 수 있고, WebGL/WASM 등에서도 사용할 수 있습니다.
- 유니티의 AsyncOperations 작업이나 코루틴 작업, Monobehavior의 메시지, 이벤트, ugui의 메세지 이벤트를 await으로 대기, 비동기 열거할 수 있습니다.
- 메모리 누수를 방지하기 위한 task tracker를 제공합니다.
- UniTask의 비동기 작업은 코루틴처럼 자동관리 되지 않기 때문에 오브젝트를 삭제해도 계속 실행됨. 따라서 CancellationToken으로 멈춰주어야 합니다.
반응형
'[Unity] > [Unity]' 카테고리의 다른 글
[Unity] Scriptable Object (0) | 2022.10.03 |
---|---|
[Unity] AsyncOperation (0) | 2022.09.23 |
[Unity] onClick.AddListener() 함수의 파라미터 전달 문제 (0) | 2022.05.28 |
[Unity] 입사각, 반사각을 구하는 방법 (0) | 2022.05.11 |
[Unity] Error Unity AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.games.Games (1) | 2022.04.04 |