36
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Unity】【Tween】Unity でどのTweenアセットを使うか悩んでいる方へ

Last updated at Posted at 2018-06-12

概要

タイトル通り、ゲーム開発などでUnityを使うとき、Tween(後述)を扱いたいときに
どのアセットを使うか悩んでいる(主に初心者)向けの記事です。

結論

[ 2023/09/12追記 ]
Unity2022 を使える環境なら MagicTween を使おう
もう一度言います。
Unity2022 を使える環境なら MagicTween を使おう

それ以外の環境なら以下の通りです。
パフォーマンス重視: LeanTween
パフォーマンスそこそこに色々やりたい:DOTween
選択の候補から外そう:iTween

Tween とは

Tween は「Between」が由来な通り、開始時の情報と終了時の情報を入力として、
途中の経過状態を補間して表現する方法です。

Unity におけるTween

Tweenアニメーションを行う方法はいくつかあります

  • Tween 系Assetを使う
    • iTween
      • DOTween
      • LeanTween
  • コルーチンによる実装(Tween系Assetを入れたくない時や、Assetじ表現できない場合など)
  • Update文の中に処理を書いて実装(スパゲティコード生成の元になりやすいので、超絶非推奨)

Tween 系アセットの利点

Tween系アセットの利点としては

  • 少ないコード量で実装できる
  • メソッドチェーンで記述可能なため挙動を把握しやすい(一部Assetのみ)
  • 低負荷でプログラムによるアニメーションを実現できる(一部Asset)

MagicTween について

2023/09/08に公開されたイマドキのTweenライブラリです。

  • DoTween では有償のPro版でしかサポートしてなかったTextMeshProのTweenもサポート
  • UniRx/UniTask をデフォルトでサポートしてる
  • UPMで導入可能

といった具合に、今時のUnity開発のデファクトスタンダードな環境に
非常にマッチしているのが大きいです。

さらにBurstCompile による爆速化もお勧めポイントで、ECSやBurstCompileが使えるような環境であれば、他のTweenライブラリより圧倒的にお勧めです。

パフォーマンス検証

MagicTween 公式の検証

PerformanceTest

( 画像は公式サイト より引用 )

爆速です

もう一度言います。

爆速です

DOTween 公式での検証

DOTween の公式で色々検証されています。
スクリーンショット 2018-06-12 10.58.58.png
( 画像は公式サイト より引用 )

手元の環境で検証

環境

  • Unity2017.4.5.f1
  • LeanTween ver 2.46
  • DOTween ver1.1.710
  • Tween でfloat 値を変動させるのを5000 個同時に行う
  • Tween でTransform を操作するのを5000 個同時に行う

結果

Tween float Transform
DOTween 3.5ms 1ms
LeanTween 0.6ms 5ms

追記: 友人から「GC調べないとダメだろ」と指摘を頂き、まさにその通りなので計測したところ

Tween 1st 2nd
DOTween 446B 0B
LeanTween 0B 0B
という具合でDOTween のみ初回でGCが発生していました。
(TweenManager.Despawn()でGCがあるのを確認)
なぜ初回なのかは現在調査中なため、わかり次第追記していこうと思います。

パフォーマンスで言えば LeanTween > DOTween >>>>>> iTween という感じです

LeanTween の注意点

LeanTween はパフォーマンスは非常に良いですが、APIが結構省かれています。
ex)

  • LeanTween.Complete() のような強制的にCompleteを呼べない
  • LeanTween.Stop() のように停止できない
  • Shake のような演出系の操作はsequence で頑張って実装しないといけない
  • RectTransform.anchoredPosition をmove できない

これらに関してはDOTweenに関してはAPIが提供されているので
「パフォーマンスをとるか」「使いやすさをとるか」で
LeanTweenを選ぶか、DOTweenを選ぶか選択すると良いと思います。

参考など

DOTweenをふわっとまとめてみた
 使い方がわからない人(公式ドキュメント見てもわからんちんな人)は参考になると思います。

LeanTweenの拡張
LeanTween の拡張を公開されています。LeanTweenを導入する際は検討しても良いかもしれません。
(ブログではDOTweenはdll化されて内部が見えないとありますが、ページトップのリンクの通りGithubで公開されているOSSです)

EaseTypeDemo
Easeの変化を確認するときに非常にお世話になっています。助かります。
Flash サポート終了に伴い見れなくなりました ><

36
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?