Unity uGUI 长按事件
来源:互联网 发布:松下触摸屏软件下载 编辑:程序博客网 时间:2024/05/22 12:11
在Unity 4.6新增的uGUI中,可以方便地对控件,通过添加EventTrigger脚本来进行添加事件。但是里面并没有包括长按事件,需要自己来实现长按事件。
长按事件
以下是一种实现方式,来自《Handling long press events in uGUI (Unity 4.6)》
using UnityEngine;using UnityEngine.Events;using UnityEngine.EventSystems;public class LongPressEventTrigger : UIBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler{ [Tooltip("How long must pointer be down on this object to trigger a long press")] public float durationThreshold = 1.0f; public UnityEvent onLongPress = new UnityEvent(); private bool isPointerDown = false; private bool longPressTriggered = false; private float timePressStarted; private void Update() { if (isPointerDown && !longPressTriggered) { if (Time.time - timePressStarted > durationThreshold) { longPressTriggered = true; onLongPress.Invoke(); } } } public void OnPointerDown(PointerEventData eventData) { timePressStarted = Time.time; isPointerDown = true; longPressTriggered = false; } public void OnPointerUp(PointerEventData eventData) { isPointerDown = false; } public void OnPointerExit(PointerEventData eventData) { isPointerDown = false; }}
长按或点击事件
当存在长按事件,又想存在点击事件时,那么就需要判断是否已经执行了长按事件,已经执行了就不能再执行点击事件了,代码如下:
using UnityEngine;using UnityEngine.Events;using UnityEngine.EventSystems;public class LongPressOrClickEventTrigger : UIBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler, IPointerClickHandler{ [Tooltip("How long must pointer be down on this object to trigger a long press")] public float durationThreshold = 1.0f; public UnityEvent onLongPress = new UnityEvent(); public UnityEvent onClick = new UnityEvent(); private bool isPointerDown = false; private bool longPressTriggered = false; private float timePressStarted; private void Update() { if (isPointerDown && !longPressTriggered) { if (Time.time - timePressStarted > durationThreshold) { longPressTriggered = true; onLongPress.Invoke(); } } } public void OnPointerDown(PointerEventData eventData) { timePressStarted = Time.time; isPointerDown = true; longPressTriggered = false; } public void OnPointerUp(PointerEventData eventData) { isPointerDown = false; } public void OnPointerExit(PointerEventData eventData) { isPointerDown = false; } public void OnPointerClick(PointerEventData eventData) { if (!longPressTriggered) { onClick.Invoke(); } }}
1 0
- Unity uGUI 长按事件
- Unity教程之-对UGUI长按事件的实现
- Unity事件系统实现uGUI Button长按
- UGUI - 长按事件实现
- UGUI - 长按事件实现
- [Unity UGUI]点击和长按组件
- Unity3D UGUI按钮长按事件
- UGUI鼠标事件绑定+鼠标长按
- unity UGUI 事件接口
- Unity UGUI事件系统
- 【UGUI】Unity的UGUI实现Button按钮长按状态的判断
- 【UGUI】Unity的UGUI实现Button按钮长按状态的判断
- 【UGUI】Unity的UGUI实现Button按钮长按状态的判断
- unity UGUI Toggle事件管理
- Unity 4.6 uGUI的点击事件
- Ugui 13.事件触发 笔记 unity教育
- unity-ugui的几种事件
- Unity UGUI不规则图片点击事件处理
- UVA - 11997 K Smallest Sums
- Android学习 -- 《关于Activity》
- (4.1.23.14)自定义控件三部曲之动画篇(十二)——animateLayoutChanges与LayoutTransition
- poj2960——S-Nim(SG函数)
- Android AutoCompleteTextView
- Unity uGUI 长按事件
- windows 64 位安装xshell5出现的一系列问题
- Android性能优化之布局优化
- (4.1.23.15)自定义控件三部曲之动画篇(十三)——实现ListView Item进入动画
- Java 7之多线程线程池 - 线程池原理(1)
- 【LeetCode-278】 First Bad Version(C++)
- POJ 2556Edge 线段的旋转
- 开篇
- Poj2502 Subway