![](https://kingmo.jp/kumonos/wp-content/uploads/2021/10/kiminonaha.jpg)
よく使う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秒たったよ");
}
}
あわせて読みたい
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://kingmo.jp/kumonos/wp-content/uploads/2021/10/kiminonaha-300x169.jpg)
【Unity】DotweenをUniTaskでawaitしたいのにVisual studioで参照出来なかった時の話
【はじめに】 タイトルのままですがDotweenをUniTaskでawaitしたいのにVisual studioで参照出来ないことがありました。 環境 Unity 2020.3.21 Dotween Pro 1.0.310 Unit...
目次
参考
Qiita
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9VW5pVGFzayVFNiVBOSU5RiVFOCU4MyVCRCVFNyVCNCVCOSVFNCVCQiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9NjJhM2U5ZGUxZWQ4Zjk1NmUxNmZkMzFjOGRkMzgwMDE&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB0b1Jpc291UCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NTU0YjRjZmY3MjJkNjc5MGIwNDFiYjY2MTgwYmFmMjA&blend-x=142&blend-y=436&blend-mode=normal&txt64=aW4g5qCq5byP5Lya56S-IOODkOODvOODgeODo-ODq-OCreODo-OCueODiA&txt-width=770&txt-clip=end%2Cellipsis&txt-color=%23212121&txt-font=Hiragino%20Sans%20W6&txt-size=36&txt-x=156&txt-y=536&s=7e0de901361ec1d9f91b4a9d080ca6a1)
UniTask機能紹介 - Qiita
UniTaskとはUniTaskとはUnity向けに最適化されたTask実装を提供するライブラリです。もとはUniRxに組み込まれていましたが途中で分離し、独立した1つのライブラリとして提...
コガネブログ
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
【Unity】非同期処理を簡単に記述できる「UniTask」の使い方をいくつか紹介 - コガネブログ
はじめに 「UniTask」を Unity プロジェクトに導入することで 非同期処理を簡単に記述できるようになります この記事では「UniTask」の使い方をいくつか紹介していきます ...
Aizu-Progressive xr Lab blog
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
UniTaskとUniRxで、待ちの処理を実装する(前編:UniTask) - Aizu-Progressive xr Lab blog
来年度で学部4年になるユムルと言います UnityのC#でUniTaskとUniRxという便利なライブラリがあるので、 前編と後編に分けて紹介したいと思います 最初に断っておきますが...
ソフトメディア研究会
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://i0.wp.com/softmedia.sakura.ne.jp/wp-content/uploads/2022/04/thumbnail_1-scaled.jpg?fit=2560%2C2560&ssl=1)
UniTaskでレッツ非同期!
はじめにみなさんメリークリスマス!Unityでasync/awaitやってますか?やってない?そんなあなたにUniTask!(初っ端から2日間、プログラム班以外興味がない記事を書いてし...