UGUI长按按钮的实现(技能蓄力使用)
脚本如下:
using UnityEngine;
using UnityEngine.EventSystems;public delegate void ProcessHandler(float p);public delegate void FinishTouchHandler(float p);/// <summary>
/// 长触摸事件
/// </summary>
public class LongTouch : MonoBehaviour,IPointerUpHandler,IPointerExitHandler,IPointerDownHandler
{/// <summary>/// 进度委托/// </summary>public event ProcessHandler m_ProcessDel;/// <summary>/// 完成委托/// </summary>public event FinishTouchHandler m_FinishTouchDel;/// <summary>/// 最长时间3秒/// </summary>public float m_MaxTime = 3f;/// <summary>/// 计时器使用/// </summary>private float m_timer = 0;/// <summary>/// 计时器开关/// </summary>public bool m_IsStart = false;/// <summary>/// 进度条/// </summary>private float m_process = 0;/// <summary>/// 添加事件/// </summary>public void AddEvent(ProcessHandler ProDel, FinishTouchHandler FinDel){m_ProcessDel = ProDel;m_FinishTouchDel = FinDel;}/// <summary>/// 移除事件/// </summary>public void RemoveEvent(){m_ProcessDel = null;m_FinishTouchDel = null;}/// <summary>/// 按下事件/// </summary>/// <param name="eventData"></param>public void OnPointerDown(PointerEventData eventData){m_IsStart = true;m_timer = 0;m_process = 0;}/// <summary>/// 离开事件/// </summary>/// <param name="eventData"></param>public void OnPointerExit(PointerEventData eventData){//m_IsStart = false;}/// <summary>/// 抬起事件/// </summary>/// <param name="eventData"></param>public void OnPointerUp(PointerEventData eventData){if(m_IsStart)m_FinishTouchDel?.Invoke(m_process);m_IsStart = false;}/// <summary>/// 计时器/// </summary>private void Timer(){if (m_IsStart){m_timer += Time.deltaTime;m_process = (m_timer / m_MaxTime) >= 1 ? 1 : (m_timer / m_MaxTime);m_ProcessDel?.Invoke(m_process);if (m_timer >= m_MaxTime){m_IsStart = false;m_FinishTouchDel?.Invoke(1);m_timer = 0;}}}// Update is called once per framevoid Update () {Timer();}
}
使用:注册事件AddEvent,注销事件RemoveEvent
private void Start()
{ ShootBtn.RemoveEvent();ShootBtn.AddEvent(ShootDownCallBack, ShootFinishCallBack);
}private void ShootFinishCallBack(float p){}private void ShootDownCallBack(float p){}
UGUI长按按钮的实现(技能蓄力使用)相关推荐
- unity3d:ugui 长按按钮
using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.Event ...
- Unity UGUI 之 实现按钮 Button 长按和双击的功能效果
Unity UGUI 之 实现按钮 Button 长按和双击的功能效果 目录 Unity UGUI 之 实现按钮 Button 长按和双击的功能效果 一.简单介绍 二.实现原理 三.注意事项 四.效果 ...
- Delphi FMX 长按按钮删除文件
Delphi FMX 长按按钮删除文件 在按钮mousedown事件中取当前毫秒数,赋给全局变量,在mouseup事件中再取一次,当二者之差超过某一阈值(设定为2000,即2秒)时,删除文件,如不 ...
- android java 怎么更换默认铃声,Android如何通过长按按钮将声音设置为铃声
如何长按按钮将声音设置为铃声? 目前它只适用于sound4但不适用于sound5 包com.test.soundboard; import java.io.File; import java.io.F ...
- c语言周欢,安徽遴选20名教师参加第一届长三角民办高校教师教学技能大赛
中安在线.中安新闻客户端讯 近日,安徽省教育厅公布了第一届长三角民办高校教师教学技能大赛省级选拔结果.经专家评分.省组委会审定,遴选产生了20名参赛选手代表安徽省参加由上海.江苏.浙江.安徽三省一市教 ...
- Extjs鼠标长按事件(实现长按按钮触发事件的方法:mousedown、mouseup)
实现效果: 注:实现的效果其实就是监听鼠标长按的事件,当鼠标左击长按改变按钮的样式,当鼠标放开之后还原按钮的样式. 实现方法: extjs: Ext.get("loginBtn") ...
- iOS开发 长按按钮变色问题
在开发过程中,经常会遇到当我们长按某一个按钮时,按钮会变色.这往往很烦人,也会影响用户体验. 以下3句代码会完美解决此问题. 一. 设置按钮非选中状态下的颜色. [button setBackgrou ...
- 简易单片机-电子定时闹钟程序设计笔记 长按按钮-定时器 蜂鸣器 LED
目录 闹钟程序设计 按钮功能说明: 自己封装的 .h 文件 配合上面程序使用 闹钟程序设计 现在程序是最开始完成源程序的只是简单封装了一下.不是一个更加简化的版本:简化后是 255行代码 要看具体效果 ...
- UGUI实现街机摇杆及技能判定
本文首发自蛮牛网 http://www.unitymanual.com/thread-41713-1-1.html?_dsign=4e15f5e6 应朱迪之邀,有幸在蛮牛分享一些心得体会,本章主要阐述 ...
- java游戏真武青云道长,天涯明月刀手游真武技能详情一览 真武技能怎么样
天涯明月刀手游真武技能怎么样,天涯明月刀手游即将迎来公厕,新门派真武即将上线,那么具体的技能怎么样呢,下面为大家带来了详细的攻略内容. 天涯明月刀手游真武技能详情一览 真武不仅再现经典的视觉形象,更还 ...
最新文章
- 关于CSS的长度单位及颜色表示
- Linux正确的关机方式
- Python实现比较两个列表(list)范围
- c语言运行给拦截了怎么办,[蓝桥杯][算法训练VIP]拦截导弹 (C语言代码)
- 子页面应用母版页图片无法显示
- 电子签章(Electronic Signature)在C#中的实现方法
- 2020,ToB 生态全景解读
- 假期娱乐和学习兼得型STEAM智能机器人有哪些?(2018-2019)
- 本题要求计算给定的一系列正整数中奇数的和。
- 学会洞察行业,让选择大于努力
- 3分钟弄明白顶级域名二级域名子域名父域名的区别
- 【两周快速入门pr】三、定格动画制作-基础操作成就你的脑洞
- Flex移动skin–第3部分:多平台开发
- 会员通系统:如何利用微信公众号/个人号做线上线下整合营销?
- QT 使用 QTcpSocket来检测 ip 设备的网络状态
- MATLAB 幂函数 图像增强
- 卷积和反卷积(deconv)
- JavaScript 隐式类型转换
- 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)
- 网络基础之网络协议,OSI,TCP/IP介绍
热门文章
- 在NS2 AODV协议中添加blackhole attacker(黑洞攻击) [转载]
- 波士顿房价预测python决策树_机器学习第二练---波士顿房价预测
- PHP-SDK实现支付宝 付款码支付、刷脸支付
- pattern-exploiting training (PET)--Few-Shot Learners
- Android计算器——入门
- 怎么在win下装python requests
- “peter piper picked a peck of pickled peppers“统计这段绕口令有多少个以p开头的单词 String中方法:split/startWith
- 三维空间的三角剖分( 3D Delaunay Triangulated graph)第一部分:从二维空间的三角剖分做起
- [OpenJudge] 2.5基本算法之搜索 红与黑
- ARCore从零到一 (1) 搭建开发环境