Unity3d使用delegate

using UnityEngine;
using System.Collections;

public class delegateTest : MonoBehaviour {
    delegate void PrintSomething();//定义委托,注意返回类型和参数
    PrintSomething m_print;//定义委托变量(委托是一个数据类型)
    void Start() {
        m_print = GUI1;//使委托变量指向一个方法,亦可以使用+=运算符使委托变量指向多个方向,执行m_print();时就会执行附加在其上的所有方法。
    }
	//要执行的委托方法
    void GUI1() {
        Debug.Log("GUI01");
        GUI.Label(new Rect(100,100,100,100),"GUI1");
    }

    void GUI2()
    {
        Debug.Log("GUI02");
        GUI.Label(new Rect(100, 100, 100, 100), "GUI2");
    }

    void OnGUI() {
        if (GUI.Button(new Rect(0, 0, 100, 100), "GUI1")) {
            m_print = GUI1;//改变委托变量指向的方法
        }
        if (GUI.Button(new Rect(100, 0, 100, 100), "GUI2"))
        {
            m_print = GUI2;
        }
        m_print();//执行委托变量指向的方法
    }
}

你可能感兴趣的:(delegate,unity3d)