この記事でのバージョン
Unity 2020.3.11f1
はじめに
Unityで位置や大きさなどのアニメーション、
いわゆるTweenを実装するアセットとしてお馴染みのDOTween。
DOTween Pro | Visual Scripting | Unity Asset Store |
今回はそのDOTweenでTweenの経過時間を取得する方法です!
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()}"); } }
なおElapsedにはincludeLoopsという引数があり(デフォルトtrue)、
これをfalseにするとTweenがループするたびに経過時間をリセットするようになります。
//無限にループするTween実行 _tweener = transform.DOMove(Vector3.zero, 2).SetLoops(-1);
//1ループごとにリセットした経過時間を表示 Debug.Log($"経過時間 : {_tweener.Elapsed(includeLoops:false)}");
ElapsedPercentage
先程のElapsedは経過時間を秒数で取得していましたが、
ElapsedPercentageを使う事で経過時間を割合(0~1)で取得する事も可能です。
//Tween実行と同時にTweener取得 _tweener = transform.DOMove(Vector3.zero, 2);
//経過時間の割合表示 Debug.Log($"経過時間の割合 : {_tweener.ElapsedPercentage()}");
なお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()}");