Unity中獲取Animator中動畫片段的時長
阿新 • • 發佈:2018-08-20
sta bre 分享圖片 個數 watermark str size .get 開發 開發環境: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中動畫片段的時間長度(秒),要用到:
AnimationClip[] clips = animator.runtimeAnimatorController.animationClips;
註意,一開始用的是
AnimatorClipInfo[] infos = animator.GetCurrentAnimatorClipInfo(0);
這裏只出現了一段動畫,也就是說這個Array的長度是1,只存放了第一段動畫,可能隨著你運行其它動畫,這個數組裏的成員會增加,但是沒卵用啊,我想從一開始就能獲得想要的動畫片段長度,所以這種方法是不可用的。
那麽就得用runtimeAnimatorController.animationClips了
還要註意,我播放動畫用的是Animator.Play(string name)
Play方法播放的是上圖中的state名字,但state上掛的animationClip的名字未必一樣
為了方便,起一樣的名字
這樣,遍歷Animator.runtimeAnimatorController.animationClips得到的數組,找到需要的名字,獲取其時間長度(秒)。
Unity中獲取Animator中動畫片段的時長