天天看點

unity_animator_stop_replay(重新播放)

對于一個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())即可。

其它資訊

部分參考:https://blog.csdn.net/u013236878/article/details/52813994,但作者提到的方法我測試不可行。

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

我的Unity版本: Unity5.3.7

繼續閱讀