unity 中的 有一种类型 叫委托类型  ,我们常常将委托和事件合起来讲,其实他们两是有些区别的,委托(delegate)是一种类型,而事件(Event)是一种实例(委托中的一种)

代码如下:


using UnityEngine;

using System.Collections;

public class TestDelegate : MonoBehaviour

{

//定义一个委托(格式是不是很类很像),用来指向我们某个函数。(c++里面的指针函数)

//param参数是名字

private delegate void DebugString(string param);

/// <summary>

/// 输出中文名字

/// </summary>

public void DebugNameOfChina(string str)

{

Debug.Log("中文名字:" + str);

}

/// <summary>

/// 输出英文名字

/// </summary>

public void DebugNameOfEnglish(string str)

{

Debug.Log("English Name:" + str);

}

//定义一个委托的变量事件

private DebugString handlerDebugString;

void OnGUI()

{

if (GUILayout.Button("输出中文名字"))

{

//我想输出中文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数DebugNameOfChina

handlerDebugString = DebugNameOfChina;

handlerDebugString("丁小未");

}

else if (GUILayout.Button("Debug English Name"))

{

//我想输出英文名字的话就给handlerDebugString  赋值成输出中文名字的这个函数

DebugNameOfEnglish

handlerDebugString = DebugNameOfEnglish;

handlerDebugString("DingXiaowei");

}

}

}