DOTweenとUniTaskのキャンセル処理について
DOTweenとDOTweenの間にキャンセル処理を挟むとき....
await transform.DOMoveY(5.0f, 0.3f).SetEase(Ease.OutBack) .ToUniTask(cancellationToken: cancel); cancel.ThrowIfCancellationRequested(); await transform.DOMoveY(-5.0f, 0.3f).SetEase(Ease.OutBack) .ToUniTask(cancellationToken: cancel);
これだとコードが冗長になってしまう感じがする
キャンセル用の拡張メソッドをつくる
public static class UniTaskExtensions { public static async UniTask ThrowIfCancelled(this UniTask task, CancellationToken cancel) { await task; cancel.ThrowIfCancellationRequested(); } public static async UniTask ThrowIfCancelled(this Tween tween, CancellationToken cancel) { await tween.ToUniTask(cancellationToken: cancel).ThrowIfCancelled(cancel); } }
こうすれば簡潔に書けてよさそう
await transform.DOMoveY(5.0f, 0.3f).SetEase(Ease.OutBack).ThrowIfCancelled(cancel); await transform.DOMoveY(-5.0f, 0.3f).SetEase(Ease.OutBack).ThrowIfCancelled(cancel);