「Unity」委托 將方法作為參數傳遞


在Unity中經常會向函數傳參,如:

void Start()
{
    Print("Xxx");
}

void Print(string name)
{
    base.print(name);
}

這是一種傳遞普通參數的方式,無論想輸出什么,只要告訴Print()函數,對方就會幫忙輸出。

那么問題來了,有沒有一種方式可以:無論想調用什么方法,只要告訴某函數(傳參),對方就會幫忙調用呢?
有的,這種方式叫做“委托”。

具體Demo代碼:

class X
{
    //定義委托,括號里參數個數與需要委托執行的函數一致
    delegate void Helper();

    //輸出A
    void A()
    {
        print("A");
    }

    //輸出B
    void B()
    {
        print("B");
    }

    //調用函數
    void Do(Helper h)
    {
        h();
    }

    void Start()
    {
        //聲明一個委托
        Helper helper;
        //為這個委托賦值,右邊寫的是需要委托的函數名
        helper = A;
        //把傳遞給其他函數,這個函數會幫忙調用我們委托的函數
        Do(helper);

        //同上
        helper = B;
        Do(helper);
    }
}

以上是簡單的實現方式。

與委托伴隨的是事件和Observer模式,以及.NET下的規范寫法
請見C# 中的委托和事件

 

原創文章,轉載請注明出

http://www.cnblogs.com/777777-716/p/5003957.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM