unity——Button组件单击双击长按功能

1.实现单击、双击、长按功能

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
public class ButtonControl_Click_Press_Double : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler
{public float pressDurationTime = 1;public bool responseOnceByPress = false;public float doubleClickIntervalTime = 0.5f;public UnityEvent onDoubleClick;public UnityEvent onPress;public UnityEvent onClick;private bool isDown = false;private bool isPress = false;private float downTime = 0;private float clickIntervalTime = 0;private int clickTimes = 0;void Update(){if (isDown){if (responseOnceByPress && isPress){return;}downTime += Time.deltaTime;if (downTime > pressDurationTime){isPress = true;onPress.Invoke();}}if (clickTimes >= 1){clickIntervalTime += Time.deltaTime;if (clickIntervalTime >= doubleClickIntervalTime){if (clickTimes >= 2){onDoubleClick.Invoke();}else{onClick.Invoke();}clickTimes = 0;clickIntervalTime = 0;}}}public void OnPointerDown(PointerEventData eventData){isDown = true;downTime = 0;}public void OnPointerUp(PointerEventData eventData){isDown = false;}public void OnPointerExit(PointerEventData eventData){isDown = false;isPress = false;}public void OnPointerClick(PointerEventData eventData){if (!isPress){//onClick.Invoke();clickTimes += 1;}elseisPress = false;}
}

2.使用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ButtonsControl_1 : MonoBehaviour
{ButtonControl_Click_Press_Double btn;void Start(){btn = GetComponent<ButtonControl_Click_Press_Double>();btn.onClick.AddListener(Click);btn.onPress.AddListener(Press);btn.onDoubleClick.AddListener(DoubleClick);}void Click(){Debug.Log("click");}void Press(){Debug.Log("press");}void DoubleClick(){Debug.Log("double click");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620719.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【InternLM 实战营第二期笔记01】书生·浦语大模型全链路开源体系+InternLM2技术报告

本次课程链接在GitHub上&#xff1a;InternLM/Tutorial at camp2 (github.com) 第一次课程录播链接&#xff1a;书生浦语大模型全链路开源体系_哔哩哔哩_bilibili InternLM2技术报告&#xff1a;arxiv.org/pdf/2403.17297.pdf 一、书生浦语大模型全链路开源体系笔记 Intern…

强化学习-Reinforcement learning | RL

目录 什么是强化学习? 强化学习的应用场景 强化学习的主流算法 强化学习是机器学习的一种学习方式,它跟监督学习、无监督学习是对应的。本文将详细介绍强化学习的基本概念、应用场景和主流的强化学习算法及分类。 什么是强化学习? 强化学习并不是某一种特定的算法,而是…

消费增值新模式:让每一分钱都更有价值

亲爱的消费者们&#xff0c;大家好&#xff01;今天我想和大家探讨一种新颖的消费方式——消费增值&#xff0c;它让您的每一次消费都蕴含了额外的价值&#xff0c;让消费变得更加有意义。 在过往的消费观念里&#xff0c;我们往往只是简单地将钱花出去&#xff0c;购买所需的商…

Jmeter —— jmeter利用取样器中http发送请求

使用Jmeter发送HTTP请求 取样器是用来模拟用户操作&#xff0c;向服务器发送请求以及接收服务器的响应数 据的一类元件&#xff0c;其中HTTP请求取样器是用来模拟常用的http请求的 步骤如下&#xff1a; 步骤一&#xff1a;添加线程组 右击测试计划——添加——线程&#x…

ModuleNotFoundError: No module named ‘imageio‘ 解决方案

错误原因&#xff1a; 缺少imageio包导致 解决办法&#xff1a; 1、查看是否安装conda环境&#xff0c;如果未安装就先安装conda环境 conda --version 输出conda版本&#xff1a; 2、输入如下代码 conda config --add channels conda-forge conda install imgaug

带你追踪 ICASSP 2024会议现场 韩国夜景令人陶醉

会议之眼 快讯 昨天&#xff0c;2024年的ICASSP&#xff08;International Conference on Acoustics, Speech, and Signal Processing&#xff09;即国际声学、语音和信号处理会议已经在韩国首尔拉开帷幕&#xff01;吸引了众多热情的与会者&#xff01;本届ICASSP会议举办日期…

J垃圾回收

J垃圾回收 1 概述2 方法区的回收3 如何判断对象可以回收3.1 引用计数法3.2 可达性分析法 4 常见的引用对象4.1 软引用4.2 弱引用4.3 虚引用4.4 终结器引用 5 垃圾回收算法5.1 垃圾回收算法的历史和分类5.2 垃圾回收算法的评价标准5.3 标记清除算法5.4 复制算法5.5 标记整理算法…

【深入理解Java IO流0x0A】NIO实战-网络聊天室

本篇博客将进行NIO编程实战&#xff0c;实现一个简单聊天室。 我们来通过 SocketChannel 和 ServerSocketChannel 实现一个 0.1 版的聊天室&#xff0c;先说一下需求&#xff0c;比较简单&#xff0c;服务端启动监听客户端请求&#xff0c;当客户端向服务器端发送信息后&#x…

如何落地一个FaaS平台?

简介&#xff1a; 函数即服务&#xff08;FaaS&#xff09;作为云计算 2.0 时代重要的发展方向&#xff0c;能够从工程效率、可靠性、性能、成本等方面给开发者带来巨大的价值&#xff0c;尤其是能够极大地提升研发效率。因此&#xff0c;拥抱FaaS成为开发者关心的重要技术领域…

FPGA - 仲裁器的设计实现

一&#xff0c;为什么做仲裁 在多主单从的设计中&#xff0c;当多个源端同时发起传输请求时&#xff0c;这个时候就需要仲裁器来根据优先级来判断响应哪一个源端&#xff0c;向其传输数据。比如&#xff1a;以太网仲裁&#xff0c;DDR仲裁&#xff0c;光纤传图仲裁..... 二&a…

【Java开发指南 | 第二篇】标识符、Java关键字及注释

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 标识符Java关键字Java注释 标识符 Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 所有的标识符都应该以字母&#xff08;A-Z 或者 a-z&#xff09;,美元符&#xff08;$&#xff0…

从51到ARM裸机开发实验(009)LPC2138 中断实验

一、场景设计 中断的概念在《从51到ARM裸机开发实验(007) AT89C51 中断实验》中已经介绍过&#xff0c;LPC2138的Keil工程创建在《从51到ARM裸机开发实验(005)LPC2138 GPIO实验》中已经介绍过。本次使用LPC2138来实现一个这样的场景&#xff1a;四个LED依次亮灭&#xff0c;时间…