本人属于水平不高的,看了项目中使用的delegate和event,拿来分享一下。
网上关于delegate和event的例子已经非常非常多了,讲解的一定比我详细,但是有时时间紧迫没时间仔细研究想拿来直接用可以看看我这个小例子。
1.首先写委托和事件的脚本 Main:
public class Main : MonoBehaviour
{
public delegate void PointDelegate(string message);
public static event PointDelegate PointEvent;
public static void DoEvent(string message)
{
PointEvent(message);
}
}
2.在unity创建一个按钮,按钮上绑定EventClick这个脚本:
public class EventClick : MonoBehaviour
{
void OnClick()
{
Main.DoEvent("click");
}
}
3.在unity创建一个空的物体,上面绑定EventMonitor这个脚本:
public class EventMonitor : MonoBehaviour
{
void Start()
{
Main.PointEvent += Do;
}
private void Do(string message)
{
Debug.Log(message);
}
}
说明:
Main这个脚本主要是定义委托和事件,EventClick这个脚本相当于广播消息,EventMonitor这个脚本是监听消息只要接受到事件PointEvent它就执行以下Do函数。
可以假设Main相当于定义事件的地方,EventClick这里可以想象成接受到了一条网络层的消息(如服务器充的钻石到账了)然后它广播一下,EventMonitor可以想象成UI上挂的脚本监听广播的消息(如刚才广播了钻石到帐了,那么我这个打开的UI有一个地方显示玩家拥有的钻石数,这时就更新一下)。
PS:监听的地方可以写很多,所以一条事件广播出来,只要是激活的GameObject有监听就会执行该干的事情。
待csdn下载审核通过后,我会把我的例子上传上去,不要积分的。嘿嘿。
下载地址:http://download.csdn.net/detail/bill501y/8383679