카테고리 없음

유니티 - 비동기 프로그래밍에 대해 알아보자. #3 (UniTask)

근본넘치는개발자 2024. 11. 18. 22:31

 

2024.11.14 - [분류 전체보기] - 비동기 프로그래밍에 대해 알아보자. #2 (Task)

 

오늘은 지난 시간에 이어 UniTask에 대해 정리해 보고자 합니다.

 

UniTask

 

UniTask는 Unity 환경에서

비동기 프로그래밍을 더 효율적으로 할 수 있게 해주는 라이브러리입니다.

 

UniTask는 외부 라이브러리라

설치하기 위해선 몇 가지 과정을 거쳐야 합니다.

 

설치 방법

 

https://github.com/Cysharp/UniTask

 

설치하는 방법은 두 가지가 있습니다.

 

1)

사이트에 들어가서 우측에 Releases라 적힌 부분을 클릭하고

직접 다운로드 후 유니티에 추가하는 방법 

 

 

2)

아래 내용을 쭉 보다 보면 UPM Packager라는 부분이 나오는데 

여기서 제공하는 URL 주소를 유니티 패키지 매니저에 추가하는 방법

 

저는 2번 방식으로 실습 진행을 했고

여러분도 따라 하기 편하시라고 URL을 가져왔습니다.

 

유니티 내에서 Package Manager를 켠 후

+버튼의 Add package from git URL.. 클릭 

아래 주소를 복사 붙여 넣기 하면 됩니다.

https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask

 

 

 

이렇게 하면 Unitask를 사용할 수 있습니다.

 

장점

 

구조체를 기반으로 제작되었기 때문에 GC가 없고,

메모리 할당이 최소화되어 최적화에 유리하다고 합니다.

 

window - UniTask Tracker를 통해

현재 활성화되어 있는 유니테스크 작업을 파악할 수 있습니다.

 

 

 

예시 코드 

using Cysharp.Threading.Tasks;

public class Example : MonoBehaviour
{
    // 비동기 메서드 선언
    async UniTaskVoid Start()
    {
        // 3초 대기
        await UniTask.Delay(3000);
        
        // 다음 프레임까지 대기
        await UniTask.Yield();
        
        // 특정 조건이 만족될 때까지 대기
        await UniTask.WaitUntil(() => condition);
    }
    
    // 취소 토큰 사용 예시
    async UniTask LoadAssetAsync(CancellationToken cancellationToken)
    {
        try
        {
            var asset = await Resources.LoadAsync<GameObject>("Prefab");
            await UniTask.Delay(1000, cancellationToken: cancellationToken);
        }
        catch (OperationCanceledException)
        {
            // 취소 처리
        }
    }
}


// 병렬 실행 가능
await UniTask.WhenAll(task1, task2, task3);

// 첫 번째 완료 대기
await UniTask.WhenAny(task1, task2, task3);

 

 

마무리 

오늘은 간단하게 Unitask에 대해서 알아보았습니다.

찾아보니 DoTween이나 어드레서블과 연계하여 사용하기도 하는 것 같습니다.

 

 

추가로 깃허브 주소에 들어가서 직접 읽어보시면 

awaitable과 비교 정리해 놓은 내용도 있더군요.

 

마침 다음 글로 awaitable을 다루려고 했는데

이때 비교하는 내용을 바탕으로 정리해 올리겠습니다. 

 

어드레서블도 조만간 한번 다루려고 했었는데 다 이어지네요;;

(이전에 에셋번들 다루면서 다룬다고 하긴 했던거 같은데 그게 벌써 한달전이네요 ㄷㄷ)

 

2024.11.19 - [분류 전체보기] - 유니티 - 비동기 프로그래밍에 대해 알아보자. #4 (Awaitable)

 

참고한 자료

https://youtu.be/j3hpuVB2cLk?si=MyZPEvK4Cf8Qm4mQ