[Unity]/[Unity]

[Unity] 유니티용 비동기 라이브러리 패키지 Unitask

극꼼 2022. 9. 22. 20:44
반응형


<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으로 멈춰주어야 합니다.

 

반응형