UniTaskを導入している場合、ToUniTaskメソッドが利用可能になります。
対応バージョン
UniTask Ver.2.0.32以降
利用準備
Package Managerからインポートした場合
自動的に有効化されます。
特に準備は必要ありません。
unitypackageをインポートした場合
Player SettingsのScripting Define SymbolsへARBOR_SUPPORT_UNITASKを追加してください。
アセンブリ定義
アセンブリ定義(Assembly Definition)を使用してアセンブリを分割している場合は、Arbor.UniTask.asmdefへの参照を追加する必要があります。
必要に応じてAssembly Definition Referencesのリストに「Assets/Plugins/Arbor/External/UniTask/Arbor.UniTask.asmdef」への参照を追加してください。
     
    
設定方法の詳細はアセンブリの定義を参照してください。
またArborの基本的なアセンブリ定義についてはこちらを参照してください。
ToUniTask(YieldAwaitable)
説明
YieldAwaitableをUniTask型に変換します。
使用するにはusing Arbor.Threading.Tasks;の追加も必要です。
パラメータ
| パラメータ名 | 説明 | 
| awaitable | 変換するYieldAwaitable | 
戻り値
変換結果のUniTask。
使用例
async/awaitの使用例をUniTaskで実装する例です。
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 | using UnityEngine;
using Cysharp.Threading.Tasks;
using Arbor;
using Arbor.Threading.Tasks;
[AddComponentMenu("")]
public class ExampleAwaitBehaviourUniTask : StateBehaviour
{
	public StateLink nextState;
	async UniTask WaitFrame(int frameCount)
	{
		try
		{
			int startFrame = Time.frameCount;
			for (int i = 0; i < frameCount; i++)
			{
				await Yield().ToUniTask();
			}
			Debug.Log($"{Time.frameCount - startFrame}");
			Transition(nextState);
		}
		catch (System.Exception ex)
		{
			if (ex is System.OperationCanceledException)
			{
				return;
			}
			Debug.LogException(ex);
		}
	}
	public override void OnStateBegin() 
	{
		WaitFrame(10).Forget();
	}
}
 |