c#基础知识3:事件

今天在想unity的start upate等等这种是怎么实现的时候,发现了unity的sendmessage机制,然后sendmessage机制,又有人说有性能问题,有人在网上用c#自带的event机制重写了这个message机制,类似于flash的event机制。于是去搜索c#自带的event机制,自己写了个小demo来实现eventDispather。


c#的event定义,

首先需要一个delegate,相当于事件的响应,c#自带了一个EventHandler,接受sender这个object,以及事件参数EventArgs(c#自带的事件参数类型)。

你也可以自己写delegate,传自己想传的参数,无需用c#自带的EventHandler和EventArgs。如

public delegate void MyEventHandler(Event evt);

其次需要定义一个event,并将事件与你定义的delegate绑定。如

public event MyEventHandler evtHandlers;

然后就需要加一个触发器,触发这个event。如

public void dispatchEvent(Event evt)
{
   evtHandlers(evt);
}

这样一个事件就定义完整了。调用的时候只用这样,用+ -来添加、删除事件响应。

class MainClass
	{
		public static void Main (string[] args)
		{
			Console.WriteLine ("Hello Event!");
			
			EventDispatcher ed = new EventDispatcher();
			ed.evtHandlers += new MyEventHandler(onEvt);
			//
			Event evt = new Event("fuckName", true, null);
			ed.dispatchEvent(evt);
		}

		private static void onEvt(Event evt)
		{
			Console.WriteLine("事件名称{0}", evt.evtName);
		}
	}

参考:

1、http://www.everyday3d.com/blog/index.php/2010/10/04/c-events-and-unity3d/

2、http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx

3、http://forum.unity3d.com/threads/38094-Is-SendMessage-really-that-bad?p=245970#post245970


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值