首页 > 编程语言 > 详细

【Unity3D学习与使用】Unity中的事件响应——UnityEvent

时间:2015-03-25 06:34:18      阅读:438      评论:0      收藏:0      [点我收藏+]

在Unity3D中也有如同Java一样的实现事件注册机制的类,就是UnityEvent。

UnityEvent继承自UnityEventBase,主要通过三个函数实现对事件的注册与响应,示例:

#pragma strict

var event : Events.UnityEvent;          //此处不能直接使用UnityEvent,需指明Events

function Start ()
{
    event = new Events.UnityEvent ();   //创建对象
    event.AddListener(Hello);           //注册事件
}

function OnGUI () 
{
    if (GUILayout.Button("静夜思") && event != null)
    {
        event.Invoke ();                //响应
    }
}

function Hello()
{
    Debug.Log ("床前明月光");
}

上述的示例就使用了UnityEvent三大函数中的两个(AddListener和invoke,一个注册事件,一个响应事件),还有一个RemoveListener,用于移除监听器。

UnityEvent的响应函数还可以传入参数,即使用UnityEvent<T>类(最多可以使用4个,即可使用到UnityEvent<T1,T2,T3,T4>),但因为这几个类都必须使用先继承才能使用,示例如下:

#pragma strict

class MyEvent extends Events.UnityEvent.<String>
{}

var event : MyEvent;            

function Start ()
{
    event = new MyEvent (); //创建对象
    event.AddListener(Hello);           //注册事件
}

function OnGUI () 
{
    if (GUILayout.Button("静夜思") && event != null)
    {
        event.Invoke (",疑是地上霜。");               //响应
    }
}

function Hello(s:String)
{
    Debug.Log ("床前明月光"+s);
}

将脚本拖至控件运行后,控制台打印结果如下:
技术分享

点击静夜思按钮后,控制台输出了“床前明月光,疑是地上霜.”

【Unity3D学习与使用】Unity中的事件响应——UnityEvent

原文:http://blog.csdn.net/zgljl2012/article/details/44610353

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!