1. 程式人生 > >unity回撥函式的使用

unity回撥函式的使用

之前在寫介面的時候只需要在一個介面播放一個特效或者動畫,實現起來並不複雜,但是當策劃提的需求需要再增加好幾個特效和動畫的時候,播放順序就成了問題,數量少的時候還可以使用定時器,但是數量一,多,定時器就會很消耗資源,所以用到了回撥函式,當上一個特效或動畫播放完之後才播下一個。這裡使用的是System.Action。
宣告方法:

System.Action action = () => {
        //實現方法
};

呼叫方法:

private void Test(System.Action action){

    //其他方法
    //一定要加判斷條件
    if(action != null
) action(); }

這裡Test函式會在其他方法執行完之後才回調action方法。

你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那裡留下了你的電話,過了幾天店裡有貨了,店員就打了你的電話,然後你接到電話後就到店裡去取了貨。
在這個例子裡,你的電話號碼就叫回調函式,你把電話留給店員就叫登記回撥函式,店裡後來有貨了叫做觸發了回撥關聯的事件,店員給你打電話叫做呼叫回撥函式,你到店裡去取貨叫做響應回撥事件。

因為特效比較多,所以聲明瞭一個System.Action的List animationList來存放回調函式,每次宣告完action之後新增進List中:
animationList.Add(action);
每次播放下一個動畫的方法:

public int animationIndex = -1;
public void PlayNextAnimation(){
        animationIndex ++;
        if(animationList.Count < 1 || animationIndex  >= animationList.Count)
            return;
        if(animationList[animationIndex] != null)
            animationList[animationIndex]();
}

回撥函式特別實用,多使用一下就會上手了。