UGUI 实现Button长按效果(RepeatButton)

在商店中购买、在背包中出售、使用一种物品的情况下,需要对按钮进行长按处理,来快速增加或减少 物品个数。在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 上面 (当然其它控件也可以) ,然后设置 长按的回调函数 以及 调用间隔。

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

例子下载:

http://download.csdn.net/detail/cp790621656/8794181
时间: 2024-08-10 19:19:18

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

android selector设置button点击效果(详细)以及常见问题

button的点击效果学习起来事实上比较容易,此点对开发者来说也是使用的比较频繁的一个知识点,与它相关的还有编辑框的获取焦点时改变背景颜色.选择button选择时改变字体颜色等等.这些其实都是用到的drawable的seletor. 当然drawable中还有很多其他效果可以实现,具体的可以参考笔者的另一篇博客: android修改控件外观(使用drawable资源) 效果:(不点击时显示白色,点击时显示灰色) 实现这个效果其实很简单,在drawable中创建一个xml文件,然后输入两行代码即可

js中模拟移动端长按效果

我们都知道 js 是有onmousedown(鼠标按下事件)和onmouseup(鼠标抬起事件),刚开始我的思路是 鼠标抬起时间减去鼠标按下时间 var oDiv = document.getElementById('div1'); var timer1; var timer2; oDiv.onmousedown = function () { timer1 = new Date(); } oDiv.onmouseup = function () { timer2 = new Date(); v

Unity UGUI 使用 CCTween 实现 打字效果

最近闲来无事 就研究了下 打字效果的实现 结果发现很简单 直白了说是太简单了  下边效果图加代码 走着 SVN 下载地址 http://code.taobao.org/svn/CCAnim 欢迎大家进行补充 点击下载

轮播图---左右切换无长滚动效果轮播图-中级难度版

左右切换无长滚动轮播图思路:首先设有全局变量position(确定当前图片是第几张),arr数组:存放图片地址,方向:direction, 及lis小圆点数组,prev,记录小圆点的前一个, moveBool是否进入运动函数等1.点击事件:点击左边的leftBn,设置direction="right",position--,在这要确定position不能超出数组长度范围, 超出要重新赋值,点击小圆点把小圆点的当前是lis数组中的第几个赋值给position,然后图片生成2.图片生成:图

Unity3d使用UGUI实现长按功能

UGUI的Button组件只有OnClick事件的监听,要实现长按功能,要监听按下事件和抬起事件,所以要使用到EventTrigger组件中的OnPointerDown和OnPointerUp来监听. 为了方便,把EventTrigger中的事件监听都封装起来,我是使用了雨松MOMO写的EventTriggerListener,用起来很方便,地址:http://www.xuanyusong.com/archives/3325 代码: using UnityEngine; using System

Android:长按连续响应的Button

在电商类app的购物车页面,经常会有这样的需求:长按"+"按钮或者"-"按钮时,购物车中的商品数量连续的增加或减少. 本例的目的就是为了实现这个效果.预览图: 1.自定义Button. /** * 长按连续响应的Button * Created by admin on 15-6-1. */ public class LongClickButton extends Button { /** * 长按连续响应的监听,长按时将会多次调用该接口中的方法直到长按结束 */ p

[UGUI]你说UnityEngine.UI.Button是怎么通过拖动来增加OnClick的监听器的呢?

一.写在前面 按国际惯例,先来讲一讲怎么涉及到这里了.我希望一个UI模块在Awake场景加载之后就可以通过回调来响应服务器消息,但是因为这个模块在场景加载的时候并不会被激活,所以需要将事件的订阅提前到该模块被加载之前,这就让我想起来了UGUI的Button的onClick事件,既然如此那就让我们一起来发现真相把. 二.真相就在这里! 首先呢,UGUI是开源的,要看源码啊,就不得不推荐Resharper了,这个插件有一个Assembly Explorer的东西,可以看到dll中的内容.下面就是Bu

UGUI官网文档重温笔记——Animation Integration

Unity推荐使用Animator动画来制作UGUI控件的动画效果.先制作好UI控件的Animation片段,然后为控件添加相应的Animator以及过渡参数,控制参数即可控制动画的播放. 例如在一个Button中, 此处将Transition(过渡转换)属性设置为:Animation,然后点击"Auto Generate Animation",即可自动添加带有四个参数的Animator, Unity已经自动添加并设置好带有四个参数的动画状态机.此时只需按下Ctrl+6,单独编辑Nor

HTTP的长连接和短连接——Node上的测试

    本文主要从实践角度介绍长.短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP.Ajax做客户端请求测试,最后简单涉及WebSocket.     关键字:长连接.短连接.Node.JS.WebSocket. 一两年前,在理论上对长短连接做了学习,那时的技能以客户端为主,所以也止步于客户端和网络抓包,两年来后台技术渐有把握,打算从前到后的实践一遍.如对理论有不理解的,可以先google/百度 一下,或者看看这篇偏理论的介绍:HTTP的长连接和短连接. 1 短连接的