よく使う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...
目次
参考
UniTask機能紹介 - Qiita
UniTaskとはUniTaskとはUnity向けに最適化されたTask実装を提供するライブラリです。もとはUniRxに組み込まれていましたが途中で分離し、独立した1つのライブラリとして提...
【Unity】非同期処理を簡単に記述できる「UniTask」の使い方をいくつか紹介 - コガネブログ
はじめに 「UniTask」を Unity プロジェクトに導入することで 非同期処理を簡単に記述できるようになります この記事では「UniTask」の使い方をいくつか紹介していきます ...
UniTaskとUniRxで、待ちの処理を実装する(前編:UniTask) - Aizu-Progressive xr Lab blog
来年度で学部4年になるユムルと言います UnityのC#でUniTaskとUniRxという便利なライブラリがあるので、 前編と後編に分けて紹介したいと思います 最初に断っておきますが...
UniTaskでレッツ非同期!
はじめにみなさんメリークリスマス!Unityでasync/awaitやってますか?やってない?そんなあなたにUniTask!(初っ端から2日間、プログラム班以外興味がない記事を書いてし...