Unity3Dでタイムラプスアニメーションを使用する
確かに、 Unity 5で新しいアニメーションを作成すると、スプライトコンポーネントSpriteRendererへのリンクがすぐに配置されることがわかりました 。 Unityは準備されたフレームを選択し、 アニメーションウィンドウにドラッグするために呼び出します。

いくつかのマウスの動きと新しいアニメーションがゲームを飾ります。 ただし、ビデオの1秒間には12〜30フレームが必要です。 また、キャラクターが実行、読み取り、植物、散水、演劇、日光浴などのさまざまな動作を実行する場合、すべてのアニメーションの継続時間は1分を超え、1000フレームになります。 そして、キャラクターはレベル上の唯一のアニメートされたオブジェクトではありません。 そのため、それほど複雑ではないシーンのロードには1分以上かかり、メモリオーバーランによりUnityがクラッシュし始めます。 はい、もちろん、組み込みのUnity SpritePackerを使用してスプライトをアトラスにパックすることは可能ですが、これはわずかな結果とパフォーマンスの改善を10〜20%だけ提供します。

フレームごとの骨格アニメーションの置き換え
より具体的な結果を得るために、フレームごとのアニメーションを骨格のアニメーションに置き換えることにしました。 スプライトが描画される長方形の代わりに、より複雑なモデルが作成され、その上にアトラスのキャラクターの一部が描画されます。

このモデルの動きにより、アニメーションが取得されます。 心配しないでください、実際、すべてが簡単です! ユニットの骨格2Dアニメーションを作成するためのツールがいくつかあります: Spine 、 DragonBones 、 Anima2D 、 Adobe Flashなど。
なぜなら 私たちのアーティストはすべてのアニメーションをFlashで行い、 GAFは私たちにとって最高でした。
FlashからUnity3Dにアニメーションをインポートする
- Unity AssetStoreからGAFをインポートします。
- * .swfファイルをコンバーターウィンドウにドラッグします。
- オブジェクトを作成して構成します。 すべての設定は直感的です:

Flashで作成されたマークアップに従って、アニメーションが自動的に作成されます。
必要なアニメーションを開始するには、スクリプトを使用します。
using UnityEngine; using GAF.Core;// GAF public class Mouse : MonoBehaviour { // [SerializeField] private GAFMovieClip GAFMovieClip; void Update () { if (Input.GetKeyDown(KeyCode.RightArrow))// "" GAFMovieClip.setSequence("run", true);// run } }
Unity Animatorでトランジションをカスタマイズする
GAFのProバージョンでは、ネイティブUnityアニメーターを使用することができ、これにより開発がはるかに簡単になります。 ただし、このタイプのアニメーションはミキシングをサポートしていないことを覚えておく必要があります。 Unityはデフォルトでクリップミキシングを有効にします。 そのため、クリップ間のトランジションでアニメーションを歪めることができます。 アニメーションをスムーズに機能させるには、クリップの混合を無効にします。

アニメーションクリップの編集
Flashで必要なクリップを作成しなかったことが判明した場合、 updateToFrameAnimator()関数を呼び出し、目的のフレームをパラメーターとして指定することで、それらをUnityで直接アセンブルできます。

要約:
そのため、フレームごとのアニメーションをFlashで作成されたアニメーションに置き換えると、シーンの読み込み時間が10倍短縮されました。 したがって、RAMの消費は大幅に削減されました。
便利なリンク:
ビデオレッスン「Unity3DでのFlashアニメーションの使用」
GAF:FlashアニメーションをUnity3dにインポートする