對於一個Animation重復播放,但在隱藏后,再次顯示播放會出現有些屬性未復原
問題描述
特效同事給的Animation中更改了物體的很多屬性,如Active,Alpha, Scale,Position等等,物體本身需要重復利用,因此當不需要使用時不直接銷毀而是隱藏等需要時再顯示,但是在隱藏后發現再次顯示的時候有些屬性不會自動復原。
解決辦法
- 在Animator Controller中添加一個空的 Animator State 為New State,並拷貝動作相同的 animation clip
- 設置 New State 的 Speed 為 0 ,讓動畫不會播放且停在第1幀
- 設置 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