【unity3d筆記】關於iTween的oncomplete函式無法執行的問題
阿新 • • 發佈:2019-01-28
問題
iTween是很方便的一個動畫工具,用起來也非常順手,最近偶然遇到一個問題——oncomplete指定的函式沒有被執行。
oncomplete屬性可以指定動畫結束時回撥某個函式,為什麼我的函式沒有被回撥呢(小姑娘:因為你帥行了吧,快點進入正題!)原因
後來才發現,oncomplete事件預設是呼叫目標物件的函式,所以,如果目標物件沒有對應的函式,就無法被呼叫。
什麼意思呢,如:
...
iTween.MoveBy(leftUI.gameObject, iTween.Hash(
"x", -4.6f,
"oncomplete" , "LeftUIMoveEnd",
)
);
...
public void LeftUIMoveEnd()
{
isLeftUIMoving = false;
}
在當前物件的某個函式裡執行iTween的MoveBy函式,移動的目標物件是leftUI。
而oncomplete指定的LeftUIMoveEnd函式是在當前類物件裡的,無法在leftUI的類裡找到,這樣是無法回撥函式的。
一句話,MoveBy的第一個引數是誰,那麼回撥函式就必須寫在誰的類裡。(小姑娘:表達能力真是越來越弱了,一句話——誰在移動,回撥函式就要在誰的類裡)
- 解決方法
要解決這個問題,很簡單,主動指定oncompletetarget為this.gameObject。
如
iTween.MoveBy(leftUI.gameObject, iTween.Hash(
"x", -4.6f,
"oncomplete", "LeftUIMoveEnd",
"oncompletetarget", this.gameObject
)
);