1. 程式人生 > >重置Animator元件狀態

重置Animator元件狀態

問題:動畫給的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()
<span style="white-space:pre">	</span>/// <summary>
	/// 重置Animator
	/// </summary>
	public void Init_Animator(){
		m_animator.Play (first_animationName);
		m_animator.Update (0);
	}
如上所說在用物件池銷燬之前(即acitve設為false之前)把動畫狀態機(Animator)設定為播放第一個動畫(Animation),然後重新整理狀態(呼叫Init_Animator())即可。