ぱふの自由帳

ぱふの技術ブログ。メインはUnity。最近、Railsかじり始めましたー!良ければフォローお願いします(`・ω・´)

DoTweenで無限ループが実行されない!そんな時に確認すべきこと

はじめに

DoTweenでSetLoops(-1)と書くと無限ループになると思います。ですが、無限ループが実行されずにエラーも出ないという状況になる場合があります。

というわけで、早速その場合について見ていきましょう。

無限ループが実行されるコード

まず、無限ループが実行される場合について見ておきましょう。
以下のようなコードでは無限ループが正常に動きます。

gameObject.transform.DOMove (new vector3(1f, 1f, 1f), 1f)
.SetLoops (-1);

無限ループが実行されないコード

では、無限ループが実行されない場合について見てみましょう。

Sequence seq = DOTween.Sequence();
        seq.Append(
            gameObject.transform.DOMove(new vector3(1f, 1f, 1f), 1f)
            .SetLoops(-1)
        );

何がダメなのか

コードが明らかに違うので分かりやすいかもしれませんが、Sequence内では無限ループは実行されません。なので、Sequence外で無限ループを実行してあげれば解決します。

おわりに

実は公式ドキュメントに書いてある内容です。笑
私は英語がてんでダメなのでハマってしまいました...なので、同じように英語が苦手な方の助けになれば幸いです!

参考:公式で言及している部分のスクショ↓↓
f:id:PafuOfDuck:20180121174623p:plain