エディタ限定です。ビルドではできない模様。
話を簡単にするためnullチェックとかは省略します。
まずエディタにおけるAnimatorControllerを取得。
// こいつが調べたいAnimatorとします。
Aniamtor animator = GetComponent<Animator>();
// エディタ用のAnimatorControllerにキャスト
var controller = animator.runtimeAnimatorController as UnityEditor.Animations.AnimatorController;
中に含まれるレイヤーごとにステートを列挙します。
// レイヤーごと
foreach (UnityEditor.Animations.AnimatorControllerLayer layer in controller.layers) {
var states = layer?.stateMachine?.states;
// ステートを列挙
foreach (var state in states) {
var clip = state.state?.motion as AnimationClip;
if (clip == null) { // BlendTreeの可能性がある
continue;
}
}
}