当某个按钮按下后给服务器发送某条消息

如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据

不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug

所以,限制UI点击相应间隔的小东西就诞生了

当然,你也可以用其他一些方法来实现,不一定非要用我这种方法

如果有好的方法还请在下面留言也跟我分享分享,哈哈

先理清思路:

第一步:我们要让一个按钮无法点击怎么办?

不添加BoxCollider不就行了!!

第二步:我们怎么知道按钮有没有被点击呢?改UIButton的代码?改UIEventTrigger的代码?

靠,这也太麻烦了吧,果断行不通!

NGUI提供了更简单的方法——UIEventListener

第三步:没有第三步,就两步!总结前两步,思考下就开始敲代码

当UIEventListener监听到按钮被点击了,我们停用BoxCollider,然后延迟间隔时间后在启用BoxCollider

就这么简单!思路都清楚了,代码我就不一一解释了!上代码

 #region HeadComments
/* ========================================================================
* Copyright (C) 2015 Arthun
*
* 作 者:Arthun
* 文件名称:UILimitClickTime
* 功 能:限制UI点击间隔
* 创建时间:2015/09/10 10:45:42
* 版 本:v1.0.0
*
* [修改日志]
* 修改者: 时间: 修改内容:
*
* =========================================================================
*/
#endregion using UnityEngine; public class UILimitClickTime : MonoBehaviour
{
public float _chickInterval = 1f;
private BoxCollider _boxCollider; void Start()
{
UIEventListener.Get(this.gameObject).onClick = onClick;
_boxCollider = this.transform.GetComponent<BoxCollider>();
} private void onClick(GameObject go)
{
if (_boxCollider != null)
{
_boxCollider.enabled = false; //这里值得注意的是如果UI被隐藏了,依然可以启用BoxCollider
Invoke("enableCollider", _chickInterval);
}
else
{
Destroy(this);
}
} private void enableCollider()
{
_boxCollider.enabled = true;
}
}

文中不足之处欢迎批评指正,如果本文对你有帮助请点一下右下角的推荐

本文链接:http://www.cnblogs.com/shenggege/p/4799755.html

unity3d 扩展NGUI —— 限制UI点击响应间隔的更多相关文章

  1. unity3d 扩展NGUI Tweener —— TweenFillAmount

    好久没写博客了,上一篇是在今年上班之前写的 从年初到现在一篇没写过,每天都在加班,实在太忙了 上班半年多了,学到不少东西 今天分享一下刚写的小功能 TweenFillAmount 用过NGUI Twn ...

  2. unity3d 扩展NGUI Tweener —— TweenTime

    这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...

  3. 跟我从零基础学习Unity3D开发--NGUI入门基础

    英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...

  4. Unity3d 用NGUI制作做新手引导的思路

    一.先看下效果 Prefab结构 二.实现思路: 1.prefab上的Panel层级设置成较高 2.背景由5个UISprite拼接起来的,4个(L,R,U,D)当作遮罩,1个镂空(Hollow)当作点 ...

  5. Unity3D使用NGUI实现简单背包功能

    前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简 ...

  6. 为Textview里面的ImageSpan添加点击响应事件

    对于图文混排的TextView,用户在浏览到里面的图片的时候,往往有点击图片preview大图或者preview之后保存图片的需求,这就需要为Textview里面的ImageSpan设置点击响应事件. ...

  7. MUI框架 按钮点击响应不好的问题解决办法

    MUI框架 按钮点击响应不好的问题 实际例子: $(function (){ mui(document.body).on('tap', '.bindchk', function(e) { //触发一次 ...

  8. 【Unity3D NGUI】----UI尺寸和位置的调整

    1 尺寸与位置 通过UIWidget类获取,该类是所有UI元素的基类 在unity中创建一个sprite,如下图所示 这里面这个sprite的大小受几个属性的影响,首先是属性面板里的Size,对应的U ...

  9. UNITY3D使用NGUI制作自适应UI的总结

    原地址:http://www.cnitblog.com/updraft/archive/2013/11/12/88801.html 制作自适应的几个方法1. 使用 UIROOT 里设置自定义高度的方法 ...

随机推荐

  1. MaxMin搜索

  2. 基于python的flask的应用实例注意事项

    1.所有的html文件均保存在templates文件夹中 2.运行网页时python manage.py runserver

  3. gdb 远程调试 android native 程序

    ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意 ...

  4. phpcms v9调用多个栏目下文章的方法

    示例:{pc:get sql="SELECT * from v9_news where status=99 and catid in(6,7,8) order by id DESC" ...

  5. 调用手机话费充值API的SDK编写思路

    思路 通过将SDK方法中返回的数据划分为正常返回数据以及错误返回的数据两部分,让调用者更简单的对接口调用错误进行处理. 将SDK调用第三方服务接口的流程划分为: 数据准备,http请求,结果处理三部分 ...

  6. node.js环境搭建

    (1)Node.js安装 Node.js安装包及源码下载地址为: https://nodejs.org/download/   , 双击下载后的安装包.msi,检查Node.js版本命令:node - ...

  7. MBean的学习

    参考:http://tuhaitao.iteye.com/blog/786391 这里以MBean对象进行演示向服务器注册,调用的过程. 1.MBean接口,接口名必须以MBean结尾 package ...

  8. html5 实现video标签的自定义播放进度条

    现在随着html5的渐热,越来越多的web开发者都开始选择使用html5写出一些比较好的web应用. html代码: <!DOCTYPE html> <html lang=" ...

  9. POJ 2186 Popular Cows --强连通分量

    题意:给定一个有向图,问有多少个点由任意顶点出发都能达到. 分析:首先,在一个有向无环图中,能被所有点达到点,出度一定是0. 先求出所有的强连通分支,然后把每个强连通分支收缩成一个点,重新建图,这样, ...

  10. 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)

    2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...