Repolode
Cysharp

Cysharp/UniTask

Unityの非同期操作、コルーチン、PlayerLoopのタイミングをawait可能にする、アロケーションフリーなasync/await連携。

スター
11,256
フォーク
1,012
未解決の Issue
26
最終コミット
13 日前

これは何?

UniTaskは、Unity向けのタスク型とasync/await連携を提供します。標準のTaskに代わる選択肢として、ゼロアロケーションを目指した、独自のasyncメソッドビルダーを備える構造体ベースのUniTask<T>を提供します。UnityのAsyncOperations、コルーチン、UnityWebRequestのリクエストを直接awaitできるほか、Yield、Delay、DelayFrameによるフレーム単位の待機で、よくあるコルーチンのパターンを置き換えられます。

ライブラリはスレッドではなくUnityのPlayerLoop上で動作するため、WebGLやWASMなどのプラットフォームでも利用できます。また、CancellationTokenによるキャンセルやタイムアウト、await可能なストリームまたは非同期列挙可能なストリームとして扱えるMonoBehaviourのメッセージイベントやuGUIイベント、ChannelやAsyncReactivePropertyを使った非同期LINQにも対応しています。TaskTrackerエディターウィンドウを使えば、リークしたタスクを見つけられます。

UniTaskの利用には、C# 7.0のtask-like builderをサポートするUnity 2018.3以降が必要です。UPMのgit URL、またはリリース版のunitypackageからインストールできます。

主な機能

  • 01ゼロアロケーションを目指した、独自のasyncビルダーを備える構造体ベースのUniTask<T>。
  • 02AsyncOperation、UnityWebRequest、IEnumeratorコルーチンを直接await可能。
  • 03PlayerLoopベースのYield、Delay、DelayFrameで、よくあるコルーチンの待機処理を置き換え。
  • 04スレッドを使わずPlayerLoop上で動作するため、WebGLやWASMに対応。
  • 05CancellationToken、タイムアウト用ヘルパー、リークのデバッグに使えるTaskTrackerエディターウィンドウ。
  • 06非同期ストリーム向けの非同期LINQ、Channel、AsyncReactiveProperty。

ユースケース

  • Unityゲームのコルーチンをasync/awaitコードに置き換える。
  • Unity内でアセットやシーンを読み込んだり、Webリクエストを順次または並行して実行したりする。
  • スレッドを利用できないWebGLをターゲットとするUnityプロジェクトを構築する。
  • uGUIのボタンクリックやMonoBehaviourのイベントを、await可能な非同期ストリームに変換する。

トピック

よくある質問

UniTask とは?
Unityの非同期操作、コルーチン、PlayerLoopのタイミングをawait可能にする、アロケーションフリーなasync/await連携。 UniTaskは、Unity向けのタスク型とasync/await連携を提供します。標準のTaskに代わる選択肢として、ゼロアロケーションを目指した、独自のasyncメソッドビルダーを備える構造体ベースのUniTask<T>を提供します。UnityのAsyncOperations、コルーチン、UnityWebRequestのリクエストを直接awaitできるほか、Yield、Delay、DelayFrameによるフレーム単位の待機で、よくあるコルーチンのパターンを置き換えられます。
UniTask は無料で使えますか?ライセンスは?
UniTask は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
UniTask は今もメンテナンスされていますか?
活発にメンテナンス中。UniTask の最終コミットは 2026年10月6日 です。
UniTask は何に使えますか?
Unityゲームのコルーチンをasync/awaitコードに置き換える。 Unity内でアセットやシーンを読み込んだり、Webリクエストを順次または並行して実行したりする。 スレッドを利用できないWebGLをターゲットとするUnityプロジェクトを構築する。 uGUIのボタンクリックやMonoBehaviourのイベントを、await可能な非同期ストリームに変換する。
UniTask はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Cysharp/UniTask

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト