【Unity】Unitask よく使うオペレーターメモ

  • URLをコピーしました!

よく使う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 Unit...
目次

参考

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という便利なライブラリがあるので、 前編と後編に分けて紹介したいと思います 最初に断っておきますが...
ソフトメディア研究会
UniTaskでレッツ非同期! はじめにみなさんメリークリスマス!Unityでasync/awaitやってますか?やってない?そんなあなたにUniTask!(初っ端から2日間、プログラム班以外興味がない記事を書いてし...

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次