サークル獏の佐藤敏 Unityとか備忘録

サークル獏の佐藤敏がUnityとかで知ったTipsを書いておく備忘録です。

プロジェクトタブからAnimationClipをAnimatorに加えるEditor拡張

アニメーション編集でVeryAnimationなどを使っているとき、操作できるAnimationClipはAnimator(AnimationController)に加えられているものだけだ。
プロジェクトウィンドウにあるClipをAnimatorタブにドラッグアンドドロップすればいいのだが、地味に面倒くさい。

そこで、少し汚い方法だがEditor拡張を書いてしまう。
AnimationClipを追加したいキャラの名前を決め打ちで書いているのがアレだが、実用上はそこまで困らない。
 

スクリプトの内容

using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;

public class AnimConMenu
{
    [MenuItem("Assets/Add to anim-controller")]
    static void AddToController() {
        if (Selection.activeObject is AnimationClip) {

            var key = "R1N4_V2_mine01 (1)"; //ここに対象にしたいキャラの名前を入れる

            AnimationClip clip = (AnimationClip)Selection.activeObject;

            var animator = GameObject.Find(key).GetComponent<Animator>();
            if (animator == null)
                return;

            var controller = animator.runtimeAnimatorController as AnimatorController; ;
            if (controller == null)
                return;

            Motion motion = (Motion)clip as Motion;
            controller.AddMotion(motion);
        }
    }
}

var key = のところを、自分が使っているキャラの名前に変更するのを忘れないこと!
このようなスクリプトを「AnimConMenu.cs」といった名前でEditorフォルダに保存する。
 

実行手順

f:id:VinSatoo:20181012170759p:plain
こんなAnimatorに、

f:id:VinSatoo:20181012170904p:plain
この「mikarup_st006.anim」を加えたいとする。
(繰り返しになるが、一回きりならドラッグアンドドロップすればいいだけである。ただAnimatorタブを開きに行くなどの手順が面倒くさいので……)

f:id:VinSatoo:20181012171015p:plain
さきほど書いたスクリプトにより、Add to anim-controllerというメニュー項目ができている。

f:id:VinSatoo:20181012171136p:plain
実行すると、たしかに「mikarup_st006」が加わった。

VeryAnimationでも……

f:id:VinSatoo:20181012171206p:plain
VeryAnimationでもこの通り、選択できるクリップのリストに「mikarup_st006」が加わっている。

f:id:VinSatoo:20181012171248p:plain
選択すれば、先程のハゲ頭がやっていたポーズと同じポーズになっている。
あとはVeryAnimationの「Tools - Create New Clip」の「Duplicate」でも使えば、元のクリップを残したまま新しいAnimationClipを編集することも可能だ。
(逆に最初の段階でProjectタブからCTRL+Dで複製し、それをAdd to anim-controllerするのでももちろん良い)
 

メリットは

プロジェクトタブで「よし、このClipを元に新しいClipを作ろう」と思ったときに

  • Animatorタブを選択して
  • 元々選んでいたClipを改めて選択して長距離移動のドラッグアンドドロップをし
  • Animatorタブをまたウラに戻す(常時開いていてもだいたい邪魔なだけでメリットがない。普通はSceneやGameタブを大きく開いているはず)

とかやるのは案外面倒である。
ちょっとした時間の短縮だが、VeryAnimationを使っている場合はけっこう作業しやすさが増すと思う。