1. 程式人生 > >【unity3d筆記】關於iTween的oncomplete函式無法執行的問題

【unity3d筆記】關於iTween的oncomplete函式無法執行的問題

  1. 問題
    iTween是很方便的一個動畫工具,用起來也非常順手,最近偶然遇到一個問題——oncomplete指定的函式沒有被執行。
    oncomplete屬性可以指定動畫結束時回撥某個函式,為什麼我的函式沒有被回撥呢(小姑娘:因為你帥行了吧,快點進入正題!)

  2. 原因
    後來才發現,oncomplete事件預設是呼叫目標物件的函式,所以,如果目標物件沒有對應的函式,就無法被呼叫。
    什麼意思呢,如:

...

 iTween.MoveBy(leftUI.gameObject, iTween.Hash(

               "x", -4.6f,

               "oncomplete"
, "LeftUIMoveEnd", ) ); ... public void LeftUIMoveEnd() { isLeftUIMoving = false; }

在當前物件的某個函式裡執行iTween的MoveBy函式,移動的目標物件是leftUI。
而oncomplete指定的LeftUIMoveEnd函式是在當前類物件裡的,無法在leftUI的類裡找到,這樣是無法回撥函式的。
一句話,MoveBy的第一個引數是誰,那麼回撥函式就必須寫在誰的類裡。(小姑娘:表達能力真是越來越弱了,一句話——誰在移動,回撥函式就要在誰的類裡)

  1. 解決方法
    要解決這個問題,很簡單,主動指定oncompletetarget為this.gameObject。
iTween.MoveBy(leftUI.gameObject, iTween.Hash(

               "x", -4.6f,

               "oncomplete", "LeftUIMoveEnd",

               "oncompletetarget", this.gameObject

               )

           );