UGUI基于EventTrigger的UI交互事件监听系统&动态加载
2017-01-25 00:58
447 查看
UGUI基于EventTrigger的UI交互事件监听系统&动态加载
UGUI中做交互,简单的会用到Button组件,但是仅仅支持点击事件触发;但有另外一个EventTriggger组件,可以支持更过交互事件:
如图,可以为交互UI设置在按下时触发的事件(PointerDown),拖拽触发事件(Drag),等…..
——————–动态添加EventTrigger监听事件:——————————–
如果是制作的预制体按钮,无法存储添加的事件,需要在实例化时动态添加,代码如下:
/*添加事件*/ EventTrigger eventTri = insButton.GetComponent<EventTrigger>();//获取实例化按钮下的EventTrigger组件,准备为其添加交互事件 EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerUp ;//设置监听事件类型 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(PlayControl._instance.OnClickVideo); entry.callback.AddListener(callback); eventTri.triggers.Add(entry);
也可以把它打包成一个方法
/*为eventTrigger添加事件(参数1:添加事件的物体;参数2:事件类型;参数3:需要调用的事件函数)*/ public void AddEventTrigger(Transform insObject,EventTriggerType eventType, UnityAction<BaseEventData> myFunction)//泛型委托 { EventTrigger eventTri = insObject.GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = eventType; entry.callback.AddListener(myFunction); eventTri.triggers.Add(entry); }
注意EventTrigger的AddListener参数是 UnityAction< BaseEventData>泛型委托,如图
因此,为其注册的事件方法需要支持 UnityAction< BaseEventData >类参数,如下:
这个参数可以不必使用,但它包含了一些基本事件信息,下面例举了其中一个用途:
因为EventTrigger没有支持右键点击获取点击的交互物体对象,因此我们可以通过BaseEventData获取到pointerCurrentRaycast,即是当前点击point下的对象物体;
/// <summary> /// /*打开右侧选择菜单*/ /// </summary> public void OnClickVideo(BaseEventData arg0)//点选目录视频,eventTrigger事件 { /*左键双击播放*/ if (Input.GetMouseButtonUp(0))//因为eventTrigger中的selectObject需要在鼠标释放时才能获取,所有用MouseUp { SelectVideoButton(); } /*右键打开右键菜单*/ else if (Input.GetMouseButtonUp(1)) { //显示右键菜单,在鼠标点击位置 PointerEventData P_EveDat = arg0 as PointerEventData; RectTransform selObject = P_EveDat.pointerCurrentRaycast.gameObject.transform as RectTransform; RightClickMenu.DisRightClickMenu(selObject); } }
相关文章推荐
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- UGUI基于EventTrigger的UI交互事件监听系统&动态加载
- 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
- Unity游戏UI框架(八):监听事件系统
- Android实战简易教程<四>(ScrollView和HorizontalScrollView动态添加控件并提供事件监听)
- Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单
- vue.js通过子组件通信和父子组件通信实现动态表单动态绑定事件(适合交互系统统一使用)
- backbone页面重绘事件监听不到解决方案 | Jquery Ajax动态加载模版 backbone监听不到事件
- 网页加载后动态改变HTML元素的onClick事件
- 加载外部sound之监听加载事件
- stage监听键盘事件被另外的swf加载后失效的解决方法。
- launcher -->menu 的设计 以及相应的事件监听
- Google Maps API 进级:监听键盘鼠标事件 加载KML或者GEORSS文档
- 动态加载多个ascx并激发事件处理
- Flex中加载多个Module之间的事件监听和触发