UGUI事件监听

思路是NGUI的监听方法方便在代码中添加监听:

 1 using UnityEngine;
 2 using UnityEngine.UI;
 3 using UnityEngine.EventSystems;
 4
 5 [SLua.CustomLuaClass]
 6 public class UIEventListener : EventTrigger
 7 {
 8     public delegate void VoidDelegate(GameObject go);
 9     public delegate void DataDelegate(GameObject go, PointerEventData data);
10     public delegate void BaseDataDelegate(GameObject go, BaseEventData data);
11     public delegate void AxisDataDelegate(GameObject go, AxisEventData data);
12
13     public VoidDelegate onClick;
14     public VoidDelegate onDown;
15     public VoidDelegate onEnter;
16     public VoidDelegate onExit;
17     public VoidDelegate onUp;
18     public VoidDelegate onSelect;
19     public VoidDelegate onUpdateSelect;
20
21     public DataDelegate onBeginDrag;
22     public DataDelegate onDrag;
23     public DataDelegate onDrop;
24     public DataDelegate onEndDrag;
25     public DataDelegate onScroll;
26
27     public AxisDataDelegate onMove;
28     public BaseDataDelegate onSubmit;
29     public BaseDataDelegate onCancel;
30
31     static public UIEventListener Get(GameObject go)
32     {
33         UIEventListener listener = go.GetComponent<UIEventListener>();
34         if (listener == null) listener = go.AddComponent<UIEventListener>();
35         return listener;
36     }
37     public override void OnPointerClick(PointerEventData eventData)
38     {
39         if (onClick != null) onClick(gameObject);
40     }
41     public override void OnPointerDown(PointerEventData eventData)
42     {
43         if (onDown != null) onDown(gameObject);
44     }
45     public override void OnPointerEnter(PointerEventData eventData)
46     {
47         if (onEnter != null) onEnter(gameObject);
48     }
49     public override void OnPointerExit(PointerEventData eventData)
50     {
51         if (onExit != null) onExit(gameObject);
52     }
53     public override void OnPointerUp(PointerEventData eventData)
54     {
55         if (onUp != null) onUp(gameObject);
56     }
57     public override void OnSelect(BaseEventData eventData)
58     {
59         if (onSelect != null) onSelect(gameObject);
60     }
61     public override void OnUpdateSelected(BaseEventData eventData)
62     {
63         if (onUpdateSelect != null) onUpdateSelect(gameObject);
64     }
65     public override void OnBeginDrag(PointerEventData eventData)
66     {
67         if (onBeginDrag != null) onBeginDrag(gameObject,eventData);
68     }
69     public override void OnDrag(PointerEventData eventData)
70     {
71         if (onDrag != null) onDrag(gameObject, eventData);
72     }
73     public override void OnCancel(BaseEventData eventData)
74     {
75         if (onCancel != null) onCancel(gameObject, (BaseEventData)eventData);
76     }
77     public override void OnDrop(PointerEventData eventData)
78     {
79         if (onDrop != null) onDrop(gameObject, eventData);
80     }
81     public override void OnEndDrag(PointerEventData eventData)
82     {
83         if (onEndDrag != null) onEndDrag(gameObject, eventData);
84     }
85     public override void OnScroll(PointerEventData eventData)
86     {
87         if (onEndDrag != null) onEndDrag(gameObject, eventData);
88     }
89     public override void OnSubmit(BaseEventData eventData)
90     {
91         if (onSubmit != null) onSubmit(gameObject, eventData);
92     }
93     public override void OnMove(AxisEventData eventData)
94     {
95         if (onMove != null) onMove(gameObject, eventData);
96     }
97 }
时间: 2024-10-16 02:36:51

UGUI事件监听的相关文章

屏幕触摸事件监听,判断上下左右的操作行为,判断方法缩小的操作行为

在手机屏幕上能够实现的人机交互行为,大致包括点击按钮,拉动滑动块,物体缩放,上下左右拉动等. 手机屏幕触摸事件的监听方法: 1.首先要设置一块布局区域,frameLayout/LinearLayout等都可以,并为布局设置id: 2.在Activity中声明相应的布局类型,并通过findViewById()方法找到该布局,然后为该布局区域设置setOnTouchListener()方法,就能监听在相应屏幕触摸操作 实现屏幕触摸事件监听的代码: private LinearLayout Land;

JavaScript-4.5 事件大全,事件监听---ShinePans

绑定事件 <input type="bubtton" onclick="javascript:alert('I am clicked');"> 处理事件 <script language="JavaScript" for="对象" event="事件"> ... (事件处理代码) ... </script> 鼠标事件举例 <script language="

[基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用

一.事件监听 对于普通的Button,对其进行事件监听Google官方给出了常见的三种监听方式:1.对每一个button设置事件监听器button.setOnClickListener(View.OnclickListener  listener);此种方法当button按钮较多时代码显得多.乱.不够简洁明了. 2.在Activity中实现接口View.OnclickListener,然后重写void onClick(View v)方法,在方法中通过switch(v.getId())予以区分不同

Windows 8 应用程序前后台切换事件监听

在一些情况下,我们需要监听应用程序切换到后台或者从后台切换至前台的事件,从而进行相关处理操作.支付宝应用锁屏(IOS,Android平台)的处理中就需要监听此事件,在用户将应用切换至后台一段时间后再切换至前台的情况下就需要弹出锁屏页面. 下图给出Windows 应用商店应用的生命周期图,应用前后台切换就是在运行和挂起直接进行切换,关于生命周期的详细介绍可以参阅官方文档:http://msdn.microsoft.com/zh-cn/library/windows/apps/hh464925.as

Java中的事件监听机制

鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动作发生在哪个组件上,那么该组件就是事件源对象 2.事件监听方法: addMouseListener(MouseListener ml) ;该方法主要用来捕获鼠标的释放,按下,点击,进入和离开的动作:捕获到相应的动作后,交由事件处理类(实现MouseListener接口)进行处理. addAction

关于v4包的Fragment过渡动画的事件监听无响应问题解决

项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAnimation方法,创建一个Animation对象,并添加动画的事件监听.而最近升级了v4包后,突然发现添加的动画事件监听无响应了.通过查看源码,发现在v4包中关于Fragment管理类FragmentManagerImpl中,在获取Animation对象后,也添加了对动画的监听事件,也就覆盖了我自己

UI事件监听的击穿

什么是UI事件监听的击穿 在游戏视图中,有两个UI界面叠在一起的时候,单击一个空白处,却触发了被覆盖在下层了UI界面中的单击事件,这就是单击击穿了上层界面. 假设场景中放置了一个箱子,单击箱子会触发一个开箱事件,如果单击一个UI,恰好UI在视觉上将箱子覆盖了,那么它也许就会触发箱子的单击事件. 如何避免和解决UI事件监听的击穿 第一种方法:用一层BoxCollider覆盖,进行遮挡. 在界面底板上Attach一个BoxCollider. 第二种方法:使用EventMask Unity的Camer

java事件监听

获取事件监听需要获取实现ActionListener接口的方法, public class SimpleEvent extends JFrame{    private JButton jb=new JButton("我是按钮,点击我");    public SimpleEvent(){        setLayout(null);        setVisible(true);        setSize(200, 100);        setDefaultCloseOp

(12)JavaScript之[事件][事件监听]

事件 1 /** 2 * 事件: 3 * onload 和 onunload 事件在用户进入或离开页面时被触发 4 * 5 * onchange事件常结合对输入字段的验证来使用 6 * onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数. 7 * 8 * onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分.首先当点击鼠标按钮时, 9 * 会触发 onmousedown 事件,当释放鼠标