はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】DoTweenの無限ループを止める方法

はじめに

DoTweenの無限ループの止め方についてかるーくまとめてみました。
またそのついでに私も最近知ったのですが、DoTweenで遅延処理ができるみたいです。
おまけとしてそちらも紹介していきたいと思います。


遅延処理

無限ループを知りたいと思っているみなさん、申し訳ありません。
最初に遅延処理について説明したいと思います。

遅延処理はこれで書けます。

DOVirtual.DelayedCall(
    2.5f,   // 遅延させる(待機する)時間
    () => {
        // こちらに実行する処理
    }
);

無限ループの止め方

無限ループを止めるにはPauseメソッドを用いる方法とKillメソッドを用いる方法があります。
ただ、また再生可能ということで今回はPauseメソッドを使っていきたいと思います。
一番重要なところはこれになります。

tweener.Pause();

このtweenerという変数はTweenerというクラスの変数です。

これを用いて簡単な無限ループの回転を2.5秒後に止めるスクリプトを作ってみました。

using UnityEngine;

using DG.Tweening;  //ここを追加してDoTweenを使う

public class DoTweenTest : MonoBehaviour {

    Tweener tweener;    //ここにDoTweenの情報を入れる
    [SerializeField] GameObject obj;

 void Start () {

        //回転を無限ループさせる
        tweener = obj.transform.DOLocalRotate(new Vector3(0, 180, 0), 1)
            .SetLoops(-1,LoopType.Yoyo);

        //2.5秒後にPauseRotationを呼び出す
        DOVirtual.DelayedCall(
            2.5f,
            () =>{
                PauseRotation();
            }
        );
 }
	
 public void PauseRotation(){
        //ここで無限ループを止める
        tweener.Pause();
    }
}

このobjになにかのGameObjectをアタッチしてみてください。
きっと回転した後に2.5秒後に止められるはずです!

さいごに

今回はDoTweenの無限ループについて勉強しました。
ただ私としてはDoTweenの遅延処理に一番驚いていて、わざわざ自分で実装していたことが悔やまれます。