
よく使うUnitaskオペレーターの自分用メモ。
using System.Threading;
using Cysharp.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
public class Sample : MonoBehaviour
{
		CancellationToken ct;
		public Button btn;
		void Start()
		{
			//MonoBehaviourを継承しているクラスであればキャンセル処理はこの形が簡単
			ct = this.GetCancellationTokenOnDestroy();
			Sample1().Forget();
		}
		//返すものがなければUniTaskVoidにする
		async UniTaskVoid Sample1()
		{
			//1フレーム待つ
			await UniTask.DelayFrame(1, cancellationToken: ct);
			//1秒待つ
			await UniTask.Delay(1000, cancellationToken: ct);
			//条件を満たしたら待機終了
			await UniTask.WaitUntil(() => transform.position.y < 0,cancellationToken: ct);
			//条件を満たさなくなったら待機終了
			await UniTask.WaitWhile(() => transform.position.z < 0,cancellationToken: ct);
			//ボタンが押されるのを待つ
			await btn.OnClickAsync(ct);
			//WithCancellation()をつければDotweenをキャンセル処理できる
			await transform.DOMoveX(1,2).WithCancellation(ct);
			//複数の条件を待つ =======================================
			var task1 = btn.OnClickAsync(cancellationToken: ct);
			var task2 = UniTask.Delay(1000,cancellationToken: ct);
			var task3 = UniTask.WaitUntil(() => transform.position.y < 0,cancellationToken: ct);
			// すべての条件が完了するまで待つ
			await UniTask.WhenAll(task1,task2,task3);
			// いずれかの条件が完了するまで待つ
			await UniTask.WhenAny(task1,task2,task3);
			//他のUnitaskを待つ =======================================
			await OneTime(ct);
		}
		async UniTask OneTime(CancellationToken token)
		{
				await UniTask.Delay(1000, cancellationToken: token);
				Debug.Log("1秒たったよ");
		}
}
					あわせて読みたい
					
			
						【Unity】DotweenをUniTaskでawaitしたいのにVisual studioで参照出来なかった時の話
						はじめに タイトルのままですがDotweenをUniTaskでawaitしたいのにVisual studioで参照出来ないことがありました。 環境 Unity 2020.3.21 Dotween Pro 1.0.310 Unitask ...					
				目次
参考
					Qiita
					
			
						UniTask機能紹介 - Qiita
						UniTaskとは UniTaskとはUnity向けに最適化されたTask実装を提供するライブラリです。 もとはUniRxに組み込まれていましたが途中で分離し、独立した1つのライブラリとして...					
				
					コガネブログ
					
			
						【Unity】非同期処理を簡単に記述できる「UniTask」の使い方をいくつか紹介 - コガネブログ
						はじめに 「UniTask」を Unity プロジェクトに導入することで 非同期処理を簡単に記述できるようになります この記事では「UniTask」の使い方をいくつか紹介していきます ...					
				
					Aizu-Progressive xr Lab blog
					
			
						UniTaskとUniRxで、待ちの処理を実装する(前編:UniTask) - Aizu-Progressive xr Lab blog
						来年度で学部4年になるユムルと言います UnityのC#でUniTaskとUniRxという便利なライブラリがあるので、 前編と後編に分けて紹介したいと思います 最初に断っておきますが...					
				
					あわせて読みたい
										
				
			