lime雑記

ゲーム開発、その他雑記。

【Unity】DOTweenのToUniTaskについて

この記事でのバージョン

Unity 2021.3.11f1
DOTween Pro 1.0.335
UniTask 2.3.1

概要

UniTaskの拡張関数の中にTween.ToUniTaskがありますが、これについての注意すべき点をメモ。

デフォルトだとキャンセルされても例外が吐かれない
await tween.ToUniTask(cancellationToken: cancellationToken);

上記のように書くことがよくあるかと思うのですが、この状態だとTweenのアニメーション中にキャンセルされた場合、OperationCanceledExceptionの例外が吐かれないので、この後の処理が普通に走ってしまいます。

await tween.ToUniTask(TweenCancelBehaviour.KillAndCancelAwait, cancellationToken);

上記のように書くと、キャンセルされた際OperationCanceledExceptionの例外が吐かれるようになります。
また、第一引数のTweenCancelBehaviourにはいくつか種類があり、Kill、Complete、Cancelの有無をそれぞれ選べるようになっています。
(正直KillAndCancelAwaitがデフォルトでいい気はする)

Killされないとawaitの待機が終わらない

TweenがKillされないとawaitの待機は終わりません。
AutoKillをオフにしている場合などはアニメーションが完了してもKillされずに待機され続けてしまうので注意。