Animator Controllerの中にあるAnimation Clip名を配列で取得して、スクリプトでアニメーションを切り替える #Unity
Unityでアニメーションを扱う際にお世話になるのがAnimator Controller。矢印を繋いで条件を入れていけばアニメーションを切り替えたり出来るのですが、「矢印を繋ぐよりもスクリプトで切り替えしたい…」と思うこともあります。
特に私は自作の「VRM Automatic Photographing」というアプリを作るとき、次々とポーズ(アニメーションデータになってる)をfor文で切り替えたいと思っていたので、配列で取得したいと思いました。
まず、Animator Controllerは以下の様に、ぐちゃっとAnimation Clipが入った状態になっています。
とりあえず、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);
}
この記事が気に入ったらサポートをしてみませんか?