EditorでAnimatorの再生 その1

EditorでAnimatorの再生 その1

 Editor上でAnimatorの再生するEditorWindowを作成しました。

Animatorの再生

 Animator.UpdateへTime.deltaTimeを渡すことでEditorでAnimatorを再生を行うことができます。

EditorWindowではLayout→Repaint→Updateの順に実行されます。試しにUpdate内以外でAnimatorの再生を行ってみました。

EditorWindowにおけるフレーム間の時間を取得

 UpdateはTime.deltaTimeによって、フレーム間の時間を取得できます。OnGUI内(LayoutやRepaint)のフレーム間の時間は取得する手段がないようなので、以下のScriptによりEditorApplication.timeSinceStartupを用いて時間間隔を取得します。さらに、再生、一時停止、停止や繰り返しの機能を追加しています。

Animatorの再生

 Scene内の選択されたGameObjectのAnimatorを取得し、再生ボタンによりAnimatorを再生します。また、再生ボタンを再度クリックすると停止します。さらに、EventTypeによってAnimatorを実行するタイミングを変更できます。

実行結果

 EditorWindowを開くと以下のように再生ボタンと選択したGameObjectの名前及びAnimatorを実行するタイミングを選択するポップアップが表示されます。

これを用いて、Layout、Repaint及びUpdateでAnimatorを実行した結果は以下の通りです。

Layout
Repaint
Update

どのタイミングでも問題なくAnimatorによるアニメーションの再生が出来ていることが分かります。

負荷をかけて実行

  以下のコードによりボタンを大量に追加し、負荷をかけて実行してみました。

実行結果

 EditorWindowを開くと大量にボタンが追加されています。

この状態でLayout、Repaint及びUpdateでAnimatorを実行した結果は以下の通りです。

Layout
Repaint
Update

LayoutとRepaintはアニメーションが正しく再生されていませんが、Updateでは正しく再生されています。よって、AnimatorはUpdate内で再生したほうが良いようです。

参考ページ

うにてぃブログ:【Unity】Editor Mode で Animator を動かす

このコンテンツはユニティちゃんライセンス条項の元に提供されています