Unity中獲取Animator中動畫片斷的時長

開發環境:Unity5.6.2數組

private Animator animator;
public void GetLengthByName(string name)
{
    float length = 0;
    AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
    foreach(AnimationClip clip in clips)
    {
        if(clip.name.Equals(name)
        {
            length = clip.length;
            break;
        }
    }
    Debug.Log(length);
}

如上,若是想獲取要播放的Animator中動畫片斷的時間長度(秒),要用到:ide

AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;

注意,一開始用的是動畫

AnimatorClipInfo[] infos = animator.GetCurrentAnimatorClipInfo(0);

這裏只出現了一段動畫,也就是說這個Array的長度是1,只存放了第一段動畫,可能隨着你運行其它動畫,這個數組裏的成員會增長,可是沒卵用啊,我想從一開始就能得到想要的動畫片斷長度,因此這種方法是不可用的。code

那麼就得用runtimeAnimatorController.animationClips了blog

還要注意,我播放動畫用的是Animator.Play(string name)ip

Unity中獲取Animator中動畫片斷的時長

Play方法播放的是上圖中的state名字,但state上掛的animationClip的名字未必同樣
Unity中獲取Animator中動畫片斷的時長開發

爲了方便,起同樣的名字animation

這樣,遍歷Animator.runtimeAnimatorController.animationClips獲得的數組,找到須要的名字,獲取其時間長度(秒)。string

相關文章
相關標籤/搜索