Tag:加入了一个延迟,在button按下状态一段时间后再開始 repeate

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections; public class RepeatPressEventTrigger : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IPointerExitHandler
{
public float interval = 0.1f; //回调触发间隔时间; public float delay = 1.0f;//延迟时间; public UnityEvent onLongPress = new UnityEvent(); private bool isPointDown = false;
private float lastInvokeTime; private float m_Delay = 0f; // Use this for initialization
void Start()
{
m_Delay = delay;
} // Update is called once per frame
void Update()
{
if (isPointDown)
{
if ((m_Delay -= Time.deltaTime) > 0f)
{
return;
} if (Time.time - lastInvokeTime > interval)
{
//触发点击;
onLongPress.Invoke();
lastInvokeTime = Time.time;
}
} } public void OnPointerDown(PointerEventData eventData)
{
isPointDown = true;
m_Delay = delay;
} public void OnPointerUp(PointerEventData eventData)
{
isPointDown = false;
m_Delay = delay;
} public void OnPointerExit(PointerEventData eventData)
{
isPointDown = false;
m_Delay = delay;
}
}

在商店中购买、在背包中出售、使用一种物品的情况下。须要对button进行长按处理,来高速添加或降低 物品个数。在Unity的 GUI中有一个RepeatButton能够用。在NGUI中有OnPressed 回调能够使用,可是在 UGUI 中的 Button 并没有这样的功能。就须要自己加入。

原理:

处理 Unity 的点击事件

IPointerDownHandler
IPointerUpHandler
IPointerExitHandler

在鼠标 按下的状态、松开、以及鼠标离开的状态来进行状态控制。

代码:

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections; public class RepeatPressEventTrigger :MonoBehaviour,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler
{
public float interval=0.1f; [SerializeField]
UnityEvent m_OnLongpress=new UnityEvent(); private bool isPointDown=false;
private float lastInvokeTime; // Use this for initialization
void Start ()
{
} // Update is called once per frame
void Update ()
{
if(isPointDown)
{
if(Time.time-lastInvokeTime>interval)
{
//触发点击;
m_OnLongpress.Invoke();
lastInvokeTime=Time.time;
}
} } public void OnPointerDown (PointerEventData eventData)
{
m_OnLongpress.Invoke(); isPointDown = true; lastInvokeTime = Time.time;
} public void OnPointerUp (PointerEventData eventData)
{
isPointDown = false;
} public void OnPointerExit (PointerEventData eventData)
{
isPointDown = false;
}
}

用法:

把脚本挂在 Button 上面 (当然其他控件也能够) 。然后设置 长按的回调函数 以及 调用间隔。

长按button。就会依照设定的间隔事件 。不停得调用 指定的 OnLongPress 函数。

样例下载:

http://download.csdn.net/detail/cp790621656/8794181

UGUI 实现Button长按效果(RepeatButton)的更多相关文章

  1. Unity UGUI实现Button按钮长按状态的判断

    代码: using UnityEngine.EventSystems; using System.Collections; /// <summary> /// 脚本位置:UGUI按钮组件身 ...

  2. ugui,button的一个坑

    如果ugui button下面挂了一些image或text,而这些image或text的范围超出了button本身的范围,则应将image和text的raycast Target属性的勾选去掉,否则只 ...

  3. Unity UGUI之Button

    创建Button后,会出现一个Image组件和一个Button组件,以及Button子节点Text(可以删除不影响功能) 其中Image的Image Type中有四个选项--Simple.Sliced ...

  4. Android点击Button水波纹效果

    先上图,看看接下来我要向大家介绍的是个什么东西,例如以下图: 接下来要介绍的就是怎样实现上述图中的波纹效果.这样的效果假设大家没有体验过的话,能够看看百度手机卫士或者360手机卫士,里面的按钮点击效果 ...

  5. 仿QQ空间长图效果简易版--母亲节感恩

    手机网站 母亲节最火的两件事 1.NBA 杜兰特在获MVP催泪致辞献给母亲:她才是真的MVP. 2.QQ空间长图 ------------------------------------------- ...

  6. android selector设置button点击效果(具体)以及常见问题

    button的点击效果学习起来其实比較easy,此点对开发人员来说也是使用的比較频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色.选择button选择时改变字体颜色等等.这些其实都是用到 ...

  7. Android Button点击效果(按钮背景变色、文字变色)

    一. 说明 Android Button的使用过程中,我们会需要为Button添加点击效果,不仅仅按钮的背景色需要变化,而且有时,我们连文字的颜色都希望变化,我们可以使用StateListDrawab ...

  8. js中模拟移动端长按效果

    我们都知道 js 是有onmousedown(鼠标按下事件)和onmouseup(鼠标抬起事件),刚开始我的思路是 鼠标抬起时间减去鼠标按下时间 var oDiv = document.getElem ...

  9. Unity UGUI 使用 CCTween 实现 打字效果

    最近闲来无事 就研究了下 打字效果的实现 结果发现很简单 直白了说是太简单了  下边效果图加代码 走着 增加可拖拽 脚本 (场景物体不支持 alpha 隐藏) 目前 CCAnim 封装了 move R ...

随机推荐

  1. 输入一个字符串输出ASCII的十六进制值

    #include <stdio.h> #include <string.h> #define LEN 1024 void main() { char s[LEN] = &quo ...

  2. CAD参数绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定位置.详细说明如下: 参数 说明 DOUBL ...

  3. PHP笔录(韩顺平)

    这里记录下韩顺平视频学习记录 http://www.php.cn/code/11753.html

  4. jquery.data.resource.js

    /*! * jQeury Data Pkugin * version: 1.0.0-2016.03.03 * Requires jQuery v1.10.2 or later * Copyright ...

  5. Runlevel in Linux

    运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式.运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多. 例如在大多数Linux操作系统下一共有如 ...

  6. 13Spring通过注解配置Bean(1)

    配置Bean的形式:基于XML文件的方式:基于注解的方式(基于注解配置Bean:基于注解来装配Bean的属性) 下面介绍基于注解的方式来配置Bean. ——组件扫描(component scannin ...

  7. MQL5备忘(2016-8-28)

    MQL5备忘 快捷操作: ·Ctrl+Space------The List Names dropdown ·Ctrl+Shift+Space------Show Parameter Info 整数类 ...

  8. xtu summer individual 5 D - Subsequence

    Subsequence Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID ...

  9. BNUOJ 1585 Girls and Boys

    Girls and Boys Time Limit: 5000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ...

  10. hihoCoder#1109 最小生成树三·堆优化的Prim算法

    原题地址 坑了我好久...提交总是WA,找了个AC代码,然后做同步随机数据diff测试,结果发现数据量小的时候,测试几十万组随机数据都没问题,但是数据量大了以后就会不同,思前想后就是不知道算法写得有什 ...