見出し画像

Animator Controllerの中にあるAnimation Clip名を配列で取得して、スクリプトでアニメーションを切り替える #Unity

Unityでアニメーションを扱う際にお世話になるのがAnimator Controller。矢印を繋いで条件を入れていけばアニメーションを切り替えたり出来るのですが、「矢印を繋ぐよりもスクリプトで切り替えしたい…」と思うこともあります。

特に私は自作の「VRM Automatic Photographing」というアプリを作るとき、次々とポーズ(アニメーションデータになってる)をfor文で切り替えたいと思っていたので、配列で取得したいと思いました。

まず、Animator Controllerは以下の様に、ぐちゃっとAnimation Clipが入った状態になっています。

画像1

とりあえず、Animator Controllerの中にあるAnimation Clipの数を取得します。変数animCtrlにAnimator Controllerが入っているとします。

var clips = animCtrl.runtimeAnimatorController.animationClips;
int clipCount = clips.Length;
Debug.Log("Animation Clipの数 : " + clipCount);

clipsは配列になっています。clips[0].nameのように、要素に対して.nameを付ければ、以下の例の様にAnimation Clipの名前が返ってきます。

POSE01

あとはこの名前をCrossFadeInFixedTimeなど、アニメーションを切り替える関数に入れれば、for文でアニメーションを切り替えることが可能です。

for(int i=0; i < clipsCount; i++)
{
stirng stateName = clips[i].name;
animCtrl.CrossFadeInFixedTime(stateName, 0.5f, 0);
}


この記事が気に入ったらサポートをしてみませんか?