以下の内容はhttps://www.karvan1230.com/entry/2024/01/16/214211より取得しました。


【Unity】ハイパフォーマンスと噂のTweenアセット「MagicTween」を触ってみた

Reddit

海外ではXやらインスタよりもメジャーだと聞いて自作ゲームの宣伝のために導入したものの一切活用できていない情報弱者な皆さんこんにちは。無駄に通知だけは毎日受信しているのですが全てのメッセージが英語の為、全く意味が分かりません。誰か助けて。

 

左手デバイス

以前クラファンで購入予定だったもののプロジェクトが停止となり(返金された)、それ以降購入する予定がなかったのですが、ここ最近の怠惰な自分を反省し、ゲーム開発へのモチベーションを上げる為に購入してみました。

 

ack05 ショートカットリモート ワイヤレス接続 or 有線接続両方対応の左手デバイス | XPPen公式ストア

キーボードのショートカットを割り当てたり、一連の操作をマクロ的に実行する事ができるアイテムです。本来はタブレットで絵を描くような方が使用する為のデバイスなんですがUnityでもキーのショートカット割り当てやSceneビューでの拡大縮小の操作を行う事ができます。

これまではTransformのGlobal/Localの切替や、Gameビュー/Sceneビューの切替、空オブジェクトの生成などの操作はゲーム制作内で頻度が高く地味に面倒だったのですが、それらをこのデバイスのキーに割り当てることで作業効率が少し上がった気がします。

「ショートカットなんて覚えれば良いだろう」と言われたらそれまでなんですが、このデバイスなら1グループで10個ほどの操作が割り当てられ、グループを切り替えれば4グループ×10キー程の操作を扱えるので、私のような忘れっぽい方には非常に便利です。

また「どのキーにどの操作を登録したか忘れる」というような方でも、キー用のシールが付属しているのでそれなりに目印になります。
まぁ、Unityを扱う上では必須ではないのですが、有ればそれなりに有用なツールになると思います。

 

MagicTween

これまでTween系のアセットと言えばDOTween一択で使用していたのですが、調べてみると新しいTween系のアセットがソコソコ出回っているようで、その中でも「MagicTween」というアセットはECS(Entity Component System)を使用したTween系アセットらしく、かなりパフォーマンスに優れているらしい。公開されているパフォーマンスの比較を見ても圧倒で気に優れているので導入を検討することにしました。

パフォーマンス比較

このアセットはアセットストアで売られているアセットではなく、有志の方によって作成され、Gitで公開されているアセットです。

その為、導入にはアセットストア経由ではなくGitURLを利用するため、事前にGitをPCにインストールしておきます。

gitforwindows.org

また、ECSを利用するためUnityのPackageManagerから「Entities」を導入しておく必要があります


ちなみにUnityのバージョンはUnity 2022.1以上である事が必須です。

Gitをインストールし、Entitiesを導入したことを確認したらPackageManagerの「Git URL からパッケージを追加」から以下のURLを指定してインストールを行います。

https://github.com/AnnulusGames/MagicTween.git?path=/MagicTween/Assets/MagicTween

 

使い方

作者の方のHPにて詳しく解説されているのでそちらを参考にするのが一番正確なんですが、ザックリ解説するとDOTweenと殆ど同じような 記述形式で使う事ができます

annulusgames.com

例えば移動系のメソッドの場合、DOTweenと同じくtranformの拡張メソッドして使用する事が出来る為

transform.TweenPosition(終了位置, 動作時間);

の記述となり、EasingやRelativeなどのオプション指定はSetterから設定することができます。

transform.TweenPosition(終了位置, 動作時間)
          .SetRelative(true)
          .SetEase(Ease.Liner);

コールバックの指定もDOTweenと殆ど同じです。

transform.TweenPosition(終了位置, 動作時間)
          .SetRelative(true)
          .SetEase(Ease.Liner)
          .OnComplete(コールバック関数);

 

しかし残念ながらPath移動に関して経由地毎のコールバック(OnWaypointChange)は無いようです。
これに関してはPath移動専用のコールバックという事もあり、優先度的に低いと判断されたのかもしれません。

この他にも複数のTweenを登録できるSequenceもDOTweenと同様に使う事ができ、DOTweenではPro版のみの機能であったTextMeshに対するTweenのメソッドも用意されています
各種メソッドやオプションの細かい説明、利用法に関しては有難い事にReadMeも(日本語で)用意されているので、そちらを参考すれば困ることはないと思います。

github.com

注意点

このようにUnity 2022.1以上のバージョンを使っていてEntitiesパッケージの導入に差し障りがなければ、DOTweenからMagicTweenへの移行はパフォーマンス面の利点を考えれば十分検討する価値があると思います。
しかしながら、DOTweenとの挙動の違いは多少存在するようで、前述のOnWaypointChangeコールバックがない事に加えて、任意の値を変更するToメソッドにおいてはOnUpdateのコールバックのみで値を参照すると、Tweenが完了しても目的の値までには達しない、という事が分かりました。

Toメソッドで0から10まで変更→OnUpdateコールバックで参照した場合

 

OnCompleteコールバックでも加えて参照するようにすれば目的の値まで到達することは確認できたので、この辺に関してはDOTweenからそのまま移行する、というわけには行かないようです。

OnUpdateとOnCompleteで参照した場合

 

他にもPath移動のPathの指定によってはDOTweenのPath移動とは少し違う挙動が見受けられたので、DOTweenから完全に移行する前には一度挙動を確認することをお勧めします。

何よりこのアセットは有料のアセットではなく、有志の方によって公開されているアセットです。
作者の方に対して際限ない動作保証や継続的な更新を期待することはお門違いだと思うので、その点を踏まえた上で自己責任で使用される事を願います。

 

宣伝

数学的迷宮脱出ゲーム「W.T.」早期アクセス版リリース中です。

store.steampowered.com

色々と難局に遭遇して牛歩の進みなんですが、製品版リリースに向けて頑張っているので、何卒応援の程、よろしくお願いいたします。




以上の内容はhttps://www.karvan1230.com/entry/2024/01/16/214211より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14