안녕하세요.
진행하는 프로젝트에서 UniTask를 사용했는데, UniTask를 어느 상황에서 좋았는지 공유해 볼까 합니다.
https://github.com/Cysharp/UniTask
GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.
Provides an efficient allocation free async/await integration for Unity. - Cysharp/UniTask
github.com
좋았던 경우
주로 네트워크 혹은 패치 다운로드와 관련된 싱글턴 객체, 데이터 혹은 리소스를 관리해주는 싱글턴에서 매우 유용하게 사용했습니다.
C#의 Task를 통해 다른 스레드로 전환되었다 메인스레드로 전환하는게 편해서 좋았습니다.
public async void DownloadPatchFiles()
{
await Task.Run(() => { // ... // });
}
애매했던 경우
유니티 컴포넌트에서는 사용하기에는 애매했습니다.
싱글턴 처럼 만들어지고 게임이 종료될 때까지 살아있는 게 아니라 언제든 파괴될 수 있는 데다 계속해서 새로운 스크립트가 추가될 텐데, 컴포넌트가 파괴될 때 실행했던 Task들을 일일이 취소시켜주지 않으면 계속 돌아가고 있어서 이런 부분에서는 유지보수상 Coroutine을 쓰는 게 더 좋습니다.
실제로 Coroutine은 컴포넌트가 꺼질 때 자동으로 멈추게 되어있습니다.
그 외
게임 로직에서도 사용하기 애매했는데 이 부분은 프로젝트의 규모, 장르, 스타일에 따라 달라질 수 있을 것 같습니다.
'Unity Tips' 카테고리의 다른 글
C# Dictionary를 foreach로 탐색할 때 Values 프로퍼티를 사용하세요 (3) | 2024.10.27 |
---|---|
Unity 2020.2버전 이상에서 빌드 할 때 Spine Mesh 최적화로 느려지는 문제 (1) | 2024.03.17 |
NSprites - Unity ECS용 Sprite Renderer, Sprite Animation 프레임워크 (1) | 2023.11.19 |
Unity Entities - Job에서 EntityManager, EntityCommandBuffer 사용 방법 (0) | 2023.07.04 |
Unity Entities - System에서 Collections(NativeArray, NativeList ...) Dispose함수를 Job 이후에 실행하는 방법 (0) | 2023.07.04 |