![](https://www.create-forever.games/wp-content/uploads/2020/10/image-4.png)
Animations をコードで取得したい
以下のコードで取得できます。
[SerializeField] Animation anim; // 個数 (Size) を取得 anim.GetClipCount(); // Animations を取得 foreach (AnimationState state in anim) { Debug.Log(state.name); }
が、GetClipCount() は取得できるのに、AnimationState が取得できないことがあります。
Legacy にするのを忘れている
これは考えてみれば当たり前ですし、Legacy でない AnimationClip を1に入れようとしても入りませんが、2のサイズを手動で増やし、そちらにドラッグすると AnimationClip が入ってしまう…。
![](https://www.create-forever.games/wp-content/uploads/2020/10/image-10.png)
こうなると、GetClipCount() は3なのに、AnimationState が1つしかないといったデータが作れてしまいます。
Console に警告が出ているので、これを見逃さないのは大事です。
![](https://www.create-forever.games/wp-content/uploads/2020/10/image-11.png)
Legacy にするには
Animation ではなく SimpleAnimation 使えばいいじゃん! という声も聞こえてきますが、レガシーと言われようと Animation がいいのであれば、Debug メニューに出てくる Legacy にチェックをつけます。
![](https://www.create-forever.games/wp-content/uploads/2020/10/image-5.png)
![](https://www.create-forever.games/wp-content/uploads/2020/10/image-6.png)
- Project で AnimationClip を選択
- Inspector を右クリック → Debug を選択
- Legacy という項目が見えるようになるので、チェック
Animation で混乱する私
Project のアニメーションファイル(AnimationClip)も、Component のアニメーションも、どちらも Animation という名前になってるんですよね…。
Project - Create の Animation Controller は Animator、Animation は AnimationClip という名前になってると混乱せずに済むと思うのですが、どうなんでしょう。