重置Animator元件狀態
阿新 • • 發佈:2019-02-10
問題:動畫給的Animation更改了物體的很多屬性,如Active,Alpha, Scale,Position等等,物體本身需要重複利用,因此使用物件池技術不直接銷燬而是隱藏等需要時再顯示,但是在隱藏後發現再次顯示的時候有些屬性不會自動復原。
解決方案:
1:讓動畫把每個動畫的邏輯搞清楚,如果對某個屬性有修改,同一個物體的其他動畫相應屬性都必須存在(當然這件事也可以自己做,不需要動畫來做)
2:我們在使用物件池銷燬之前(即acitve設為false之前)把動畫狀態機(Animator)設定為播放第一個動畫(Animation),然後重新整理狀態即可。備註:第一個動畫可以自己建立一個空動畫(Init)作為動畫的開始。
方案一自己決定咯。
方案二:
1:需要在一開始(Awake或者Start)獲取第一個動畫的名稱,如果是自己定義的空動畫“Init”,直接使用名字就可以了
string first_animationName = m_animator.GetCurrentAnimatorClipInfo (0) [0].clip.name;
然後新增函式Init_Animator()
如上所說在用物件池銷燬之前(即acitve設為false之前)把動畫狀態機(Animator)設定為播放第一個動畫(Animation),然後重新整理狀態(呼叫Init_Animator())即可。<span style="white-space:pre"> </span>/// <summary> /// 重置Animator /// </summary> public void Init_Animator(){ m_animator.Play (first_animationName); m_animator.Update (0); }