您的位置:首页 > 移动开发 > Unity3D

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

2015-03-25 02:33 537 查看
在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);
}


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



点击静夜思按钮后,控制台输出了“床前明月光,疑是地上霜.”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐