Unity3d中EventTrigger的封装
2015-05-06 10:30
405 查看
因为unity中新增的UGUI中的Button只有onClick事件,但如果想要丰富Button的点击事件,就要使用到EventTrigger,
但是自带的用着不方便,所以就对他进行了封装。
废话不多说,上代码:
自定义了一个类继承自上面提到的:EventTrigger
下面是代码的使用:
详细请参考:
http://www.taikr.com/article/182
但是自带的用着不方便,所以就对他进行了封装。
废话不多说,上代码:
自定义了一个类继承自上面提到的:EventTrigger
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class EventTriggerListener: UnityEngine.EventSystems.EventTrigger { public delegate void VoidDelegate(); public delegate void BoolDelegate(bool state); public delegate void FloatDelegate(float delta); public delegate void VectorDelegate(Vector2 delta); public delegate void ObjectDelegate(GameObject obj); public delegate void KeyCodeDelegate(KeyCode key); public VoidDelegate onClick; public VoidDelegate onDown; public VoidDelegate onEnter; public VoidDelegate onExit; public VoidDelegate onUp; public VoidDelegate onSelect; public VoidDelegate onUpdateSelect; static public EventTriggerListener Get(Transform transform) { EventTriggerListener listener = transform.GetComponent<EventTriggerListener>(); if (listener == null) listener = transform.gameObject.AddComponent<EventTriggerListener>(); return listener; } public override void OnPointerClick(PointerEventData eventData) { if (onClick != null) onClick(); } public override void OnPointerDown(PointerEventData eventData) { if (onDown != null) onDown(); } public override void OnPointerEnter(PointerEventData eventData) { if (onEnter != null) onEnter(); } public override void OnPointerExit(PointerEventData eventData) { if (onExit != null) onExit(); } public override void OnPointerUp(PointerEventData eventData) { if (onUp != null) onUp(); } public override void OnSelect(BaseEventData eventData) { if (onSelect != null) onSelect(); } public override void OnUpdateSelected(BaseEventData eventData) { if (onUpdateSelect != null) onUpdateSelect(); } }
下面是代码的使用:
public Button click; void Start () { EventTriggerListener.Get(click.transform).onClick += Click; EventTriggerListener.Get(click.transform).onDown += ClickDela; } public void Click () { bar = this.GetComponent<Scrollbar>(); bar.value = 1; } public void ClickDela() { bar = this.GetComponent<Scrollbar>(); bar.value = 0.5f; }
详细请参考:
http://www.taikr.com/article/182
相关文章推荐
- Unity3D之AssetBundle资源加载封装
- unity3d uGUI 高级封装
- 在Unity3D中用C#封装一个类似AS3的ByteArray类(二)--升级版
- [Unity3d]调用自己封装的dll
- Unity3D开发和总结:用C#封装类似苹果NSNotificationCenter消息通信机制(KVO)
- Unity3D Debug类的封装问题
- Unity3D延迟回调的封装
- [Unity3d]调用自己封装的dll,假装让自己也牛B一把吧
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
- Unity3d 封装字段并在Inspector中显示
- Unity3D C# 状态机封装
- [Unity3d]调用自己封装的dll
- unity3d---属性封装和继承
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
- [Unity3d]调用自己封装的dll
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载
- Unity3d将程式码封装的办法
- Unity3D调用自己封装的dll
- unity3d之checkbox控件的封装
- Unity3D学习之(封装和继承)