当前位置: 首页 > news >正文

Unity3D UI 双击和长按

Unity3D 实现 UI 元素双击和长按功能。

UI 双击和长按

上一篇文章实现了拖拽接口,这篇文章来实现 UI 的双击和长按。

双击

创建脚本 UIDoubleClick.cs,创建一个 Image,并把脚本挂载到它身上。

在脚本中,继承 IPointerClickHandler 接口,实现 OnPointerClick 点击方法。

第一次点击时,记录点击的时间,如果第二次点击的时间,和上次点击时间的间隔非常短,则判定为双击。

using UnityEngine;
using UnityEngine.EventSystems;public class UIDoubleClick : MonoBehaviour, IPointerClickHandler
{public float doubleClickThreshold = 0.2f; // 双击的时间间隔float lastClickTime = 0f; // 记录上次点击的时间public void OnPointerClick(PointerEventData eventData){// 获取当前点击的时间float currentTime = Time.time;// 判断两次点击时间间隔是否在阈值范围内if (currentTime - lastClickTime < doubleClickThreshold){OnDoubleClick();}// 更新上一次点击的时间lastClickTime = currentTime;}void OnDoubleClick(){Debug.Log("双击");}
}

运行效果:

双击

长按

创建脚本 UILongPress.cs,并挂载到 Image 身上。

在脚本中,继承 IPointerDownHandlerIPointerUpHandler 接口,实现 OnPointerDown(按下)和 OnPointerUp(抬起)方法。

按下时,记录按下的时间和按住的状态,在 Update 中检查长按的时间和状态,达到长按的时间阈值后,执行一次长按的逻辑,并把长按状态重置。

using UnityEngine;
using UnityEngine.EventSystems;public class UILongPress : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{public float longPressThreshold = 1.0f; // 长按的时间阈值float pressStartTime; // 按下的时间bool isPressing = false; // 是否按住public void OnPointerDown(PointerEventData eventData){isPressing = true;pressStartTime = Time.time;}public void OnPointerUp(PointerEventData eventData){isPressing = false;}void Update(){// 检查是否在长按状态if (isPressing && (Time.time - pressStartTime) > longPressThreshold){OnLongPress();isPressing = false; // 只触发一次长按事件}}void OnLongPress(){Debug.Log("长按");}
}

运行效果:

长按

http://www.lryc.cn/news/481465.html

相关文章:

  • LabVIEW扫描探针显微镜系统
  • 问题式教学法在生物教学中的应用探索
  • C++ | Leetcode C++题解之第556题下一个更大元素III
  • 实现链式结构二叉树
  • 在vscode中如何利用git 查看某一个文件的提交记录
  • 【ShuQiHere】️`adb kill-server` 和 `adb start-server` 命令的作用
  • 植物明星大乱斗1
  • 信息安全工程师(84)UNIX/Linux操作系统安全分析与防护
  • 全面解析 Python typing模块与静态类型注解:从基础到高级
  • Jekins篇(搭建/安装/配置)
  • 【工具变量】排污权交易政策试点DID(2000-2023)
  • Proteus中数码管动态扫描显示不全(已解决)
  • 证件照尺寸168宽240高,如何手机自拍更换蓝底
  • 力扣.167 两数之和 II two-sum-ii
  • ipconfig
  • Qt_day3_信号槽
  • 求从2开始的第n个素数
  • 【Android】View—基础知识,滑动,弹性滑动
  • MYSQL中的两种转义操作
  • 力扣题目解析--删除链表的倒数第n个节点
  • Knowledge Graph-Enhanced Large Language Models via Path Selection
  • Android 项目模型配置管理
  • 「QT」几何数据类 之 QSizeF 浮点型尺寸类
  • Essential Cell Biology--Fifth Edition--Chapter one(2)
  • 大语言模型LLMs在医学领域的最新进展总结
  • 云防护单节点2T抗攻击能力意味着什么?
  • IDEA在编译时: java: 找不到符号符号: 变量 log
  • HTML 基础架构:理解网页的骨架
  • FPGA学习笔记#5 Vitis HLS For循环的优化(1)
  • web实操4——servlet体系结构