環境
Unity2022.2.2f1
概要
Editor環境でAnimatorからAnimationClipを取得します。所属するLayerやAvaterMaskの情報も取得します。
runtimeAnimatorControllerをAnimatorControllerに変換することが重要でした。
コード
var animController = _animator.runtimeAnimatorController as AnimatorController; for(int i = 0; i < animController.layers.Length; i++) { var layer = animController.layers[i]; var mask = layer.avatarMask; if(mask != null) { for(int m = 0; m < mask.transformCount; m++) { if(mask.GetTransformActive(m) == true) { var path = mask.GetTransformPath(m); if(string.IsNullOrEmpty(path) == true) continue; var trans = _targetObj.transform.Find(path); Debug.Log($"avatarMask:{mask.name} transform:{trans.name} layer:{layer.name}"); } } } foreach(var state in layer.stateMachine.states) { var animClip = state.state.motion as AnimationClip; Debug.Log($"animClip:{animClip.name} layer:{layer.name}"); } }