はじめに
Unityで非同期処理を効率的に行うためのパッケージとして注目されている「UniTask」。
非同期処理を簡単かつ高速に実現できるため、多くの開発者に支持されています。
今回は、UniTaskの導入方法から基本的な使い方までを詳しく解説します!
UniTaskとは?
UniTaskは、Unity向けの軽量な非同期タスクライブラリです。
C#の標準非同期処理機能であるTask
よりも軽量で、Unityのコルーチンとシームレスに統合できます。
これにより、複雑な非同期処理もシンプルに記述することが可能です。
UniTaskの導入方法
まずは、UniTaskをプロジェクトに導入する方法を説明します。
https://github.com/Cysharp/UniTask/releases から unitypackageを落としてきてもいいですが、
管理しやすいように今回はUnity Package Managerからインストールしたいと思います。
- Unityを開き、プロジェクトをロードします。
- メニューから「ProjectSettings」→「Package Manager」を選択します。
上記のように入力します。
- Name : OpenUPM
- URL : https://package.openupm.com
- Scope(s) : com.cysharp.unitask - 上記の入力が完了したらWindowのPackageManagerからUniTaskのインストールをします。
- インストールが完了するまで待ちます。
基本的な使い方
UniTaskの基本的な使い方をいくつかの例を通じて見てみましょう。
using Cysharp.Threading.Tasks;
using UnityEngine;
public class Sample : MonoBehaviour
{
private async void Start()
{
Debug.Log("処理開始");
await SampleAsync();
Debug.Log("処理終了");
}
private async UniTask SampleAsync()
{
await UniTask.Delay(1000); // 1秒待機
Debug.Log("1秒経過");
}
}
この例では、SampleAsync
メソッドが1秒待機してからログを出力します。await
キーワードを使用することで、非同期処理が完了するまで次の処理を待機します。
非同期メソッドの連鎖
private async UniTask ChainAsync()
{
await MethodAAsync();
await MethodBAsync();
await MethodCAsync();
}
private async UniTask MethodAAsync()
{
await UniTask.Delay(1000);
Debug.Log("MethodA 完了");
}
private async UniTask MethodBAsync()
{
await UniTask.Delay(2000);
Debug.Log("MethodB 完了");
}
private async UniTask MethodCAsync()
{
await UniTask.Delay(3000);
Debug.Log("MethodC 完了");
}
このように、複数の非同期メソッドを連鎖させることも可能です。
それぞれのメソッドが順番に実行され、全ての処理が終わるまで次の処理が待機されます。
まとめ
UniTaskを利用することで、Unityでの非同期処理が格段に楽になります。
特に、軽量で効率的な非同期タスク管理が可能になるため、パフォーマンスを気にするプロジェクトにも最適です。
導入も簡単なので、ぜひ試してみてください!