Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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

結論

パフォーマンス重視: LeanTween
パフォーマンスそこそこに色々やりたい:DOTween
選択の候補から外そう:iTween

Tween とは

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

Unity におけるTween

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

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

Tween 系アセットの利点

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

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

パフォーマンス検証

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 個同時に行う

https://github.com/Cova8bitdots/TweenPerformance

結果

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の変化を確認するときに非常にお世話になっています。助かります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした