1. 程式人生 > >Unity重置Animator狀態,重複播放同一個Animation

Unity重置Animator狀態,重複播放同一個Animation

遇到問題

特效同事給的Animation更改了物體的很多屬性,如Active,Alpha, Scale,Position等等,物體本身需要重複利用,因此使用物件池技術不直接銷燬而是隱藏等需要時再顯示,但是在隱藏後發現再次顯示的時候有些屬性不會自動復原。

解決辦法

  1. 在Animator Controller中新增一個空的 Animator State 為New State,並賦值動作相同的 animation clip
  2. 設定 New State 的 Speed 為 0 ,讓動畫不會播放且停在第1幀
  3. 設定 New State 為 Default State (預設播放)

重複播放

m_animator.Play("attack_1",0,0f);

狀態重置

當動畫播放完成後,重置狀態

// 重置Animator
public void ResetAnimator(){
    m_animator.Play ("New State");
}

如上所說在用物件池銷燬之前(即acitve設為false之前)把動畫狀態機(Animator)設定為播放第一個動畫(Animation),然後重新整理狀態(呼叫ResetAnimator())即可。

其它資訊

m_animator.Play ("New State");
m_animator.Update (0);

補充:使用這種方法也可以讓動畫停在第一幀

// 重置Animator
public void ResetAnimator(){ 
    animator.Play(aninName, 0, 0);
    animator.Update(0);
    animator.enabled = false;
}

我的Unity版本: Unity5.3.7