(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


DOTweenの経過時間を取得するElapsed【Unity】【DOTween】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2020.3.11f1


はじめに

Unityで位置や大きさなどのアニメーション、

いわゆるTweenを実装するアセットとしてお馴染みのDOTween

DOTween Pro | Visual Scripting | Unity Asset Store


今回はそのDOTweenでTweenの経過時間を取得する方法です!

f:id:kan_kikuchi:20210728095233j:plain



Elapsed

さっそくですがTweenの経過時間を取得するにはTweenerを使います。

なおTweenerとはDOMove等を実行した時に返り値として取得できるTweenerCoreの継承元です。



そのTweenerにElapsedというメソッドがあり、これでTweenの経過時間を取得出来ます。

なお、Tweenが実行中じゃない時に取得しようとすると警告が表示されます。

private Tweener _tweener;
  
private void Start(){
  //Tween実行と同時にTweener取得
  _tweener = transform.DOMove(Vector3.zero, 2);
}

private void Update() {
  //Tween実行中なら経過時間表示
  if (_tweener.IsActive()) {
    Debug.Log($"経過時間 : {_tweener.Elapsed()}");
  }
}
f:id:kan_kikuchi:20210728092835j:plain


なおElapsedにはincludeLoopsという引数があり(デフォルトtrue)、

これをfalseにするとTweenがループするたびに経過時間をリセットするようになります。

//無限にループするTween実行
_tweener = transform.DOMove(Vector3.zero, 2).SetLoops(-1);
//1ループごとにリセットした経過時間を表示
Debug.Log($"経過時間 : {_tweener.Elapsed(includeLoops:false)}");
f:id:kan_kikuchi:20210728093210j:plain



ElapsedPercentage

先程のElapsedは経過時間を秒数で取得していましたが、

ElapsedPercentageを使う事で経過時間を割合(0~1)で取得する事も可能です。

//Tween実行と同時にTweener取得
_tweener = transform.DOMove(Vector3.zero, 2);
//経過時間の割合表示
Debug.Log($"経過時間の割合 : {_tweener.ElapsedPercentage()}");
f:id:kan_kikuchi:20210728094036j:plain


なおElapsed同様に引数にincludeLoopsがあります。


ElapsedDelay

DOTweenはSetDelayを使うでTweenの発生を遅らせる事が出来ますが、

//1秒後にTweenを実行
_tweener = transform.DOMove(Vector3.zero, 2).SetDelay(1);


ElapsedもElapsedPercentageもこのDelay中は値がずっと0になります。

なので、Delayの経過時間を取得したい場合はElapsedDelayを使います。

Debug.Log($"Delayの経過時間 : {_tweener.ElapsedDelay()}");
f:id:kan_kikuchi:20210728093802j:plain