《获取 Animator动画控制器 0层 所存储的所有“ 动画Clip剪辑”名称 》

81 篇文章 1 订阅
5 篇文章 0 订阅

            关于unity2015及2017版
                //Animator动画管理器
                private Animator ator;
                //Animator动画信息对象数组
                  private AnimatorStateInfo[]  asiAry;
                //便利输出 “Animator动画管理器”0层 所有存储的动画名称
                void GetCurrentAnimationName() {

                    //获取 自身Animator动画管理器
                    anim=GetComponent<Animator>();
                    //获取 “Animator动画管理器”0层 所有存储的动画名称
                    asiAry=anim.GetCurrentAnimationClipState(0);
                         foreach(AnimationInfo item in asiAry)
                        {
                                   Debug.Log( item.clip.name);
                       }
                }

            关于unity2020版-----------------------------------------------
                  void GetAnimatonClipAry()
                {        
                    //获取这个Animator组件上对应某一层的AnimatorController资源
                    AnimatorControllerLayer layer =((AnimatorController)GetComponent<Animator>().runtimeAnimatorController).layers[0];
                    AnimatorStateMachine sm = layer.stateMachine;  //获取层状态机
                    ChildAnimatorState[] ams = sm.states;//获取该层状态机的子状态机 
        
                    //下面的代码可以封装为一个函数,反复使用
                    for (int i=0;i<ams.Length;i++) {//因为u3d没有提供直接获取指定名字的state,所以我们必须历遍所有的去找我们想要的那个(耗性能)
                 
                        //if(ams[i].state.name=="XXX")//获取名字为XXX的State
                        //ams[i].state.motion = mm;//改他Motion(动作)
                        Debug.Log(ams[i].state.name);
                    }
                    //如果你想获取当前的state信息 可以历遍时 用 animator.GetCurrentAnimatorStateInfo().IsName()去判定,如果成功就说明是当前的State
                    //这个方法很消耗性能,因为要循环一次,不过也值             
                }

 

 

》》》》如果不行的话

/// <summary>
/// 获取Ator里面 所有动画剪辑的名称
/// </summary> 
public List<string> GetAnimatonClipAry2(Animator animator)
{
     List<string> temp =new List<string>();
     RuntimeAnimatorController ac = animator.runtimeAnimatorController;
     AnimationClip[] tAnimationClips =  ac.animationClips;
     for (int i = 0; i < tAnimationClips.Length; i++)
     {
          
          //Debug.Log(+"名称");
          temp.Add(tAnimationClips[i].name);
     }

     return temp;
}

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AD_喵了个咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值