码迷,mamicode.com
首页 > 其他好文 > 详细

UGUI 代码 动态添加 Event Trigger 的事件

时间:2015-09-30 17:45:34      阅读:4058      评论:0      收藏:0      [点我收藏+]

标签:

Additionally, if you need more than just the events provided by default, I‘d suggest instead attaching a EventTrigger to your game object. This gives us access to the BaseEventData object returned from the event, telling us stuff like the object that created the event. Then you can do something like:

//Create an event delegate that will be used for creating methods that respond to events 
public delegate void EventDelegate(UnityEngine.EventSystems.BaseEventData baseEvent);

Then we can create a method for handling events, the signature must match that of our delegate. So, it needs to return void and accept BaseEventData as its first and only parameter:

public void DropEventMethod(UnityEngine.EventSystems.BaseEventData baseEvent)
 { Debug.Log(baseEvent.selectedObject.name + " triggered an event!"); 
//baseEvent.selectedObject is the GameObject that triggered the event,
 // so we can access its components, destroy it, or do whatever. 
}

动态添加 EventTrigger 代码如下,

//从UI gameobject上面获取到 eventtrigger 
EventTrigger eventTrigger = buttonObject.GetComponent<EventTrigger>();  
//创建一个新的 trigger。 在这个trigger上添加事件类型和回调函数 
EventTrigger.Entry entry = new EventTrigger.Entry();  
//设置这个eventtrigger的事件类型为 Drop 
entry.eventID = EventTriggerType.Drop;  
//初始化callback entry.callback = new EventTrigger.TriggerEvent();  
//创建一个新的UnityAction, 里面就是我们写的回调函数 
UnityEngine.Events.UnityAction<BaseEventData> callback = new UnityEngine.Events.UnityAction<BaseEventData>(DropEventMethod);  
//添加到trigger 的 callback里面 
entry.callback.AddListener(callback); 
 //最后添加到物体的eventtriger的trigger里面 
eventTrigger.trigger.Add(entry);

UGUI 代码 动态添加 Event Trigger 的事件

标签:

原文地址:http://www.cnblogs.com/rocbomb/p/4849662.html

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!