Introduction
When writing asynchronous code in Unity, Coroutine and UniTask have long been the practical choices.
A major reason is that many Unity APIs must be called from the main thread.
If you simply use .NET Task and move work to a background thread, you can run into problems the moment you touch objects such as GameObject, Transform, or SceneManager.
UniTask has been a very convenient solution to this constraint.






