unity3d 扩展NGUI —— 限制UI点击响应间隔
当某个按钮按下后给服务器发送某条消息
如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据
不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的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点击响应间隔的更多相关文章
- unity3d 扩展NGUI Tweener —— TweenFillAmount
好久没写博客了,上一篇是在今年上班之前写的 从年初到现在一篇没写过,每天都在加班,实在太忙了 上班半年多了,学到不少东西 今天分享一下刚写的小功能 TweenFillAmount 用过NGUI Twn ...
- unity3d 扩展NGUI Tweener —— TweenTime
这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...
- 跟我从零基础学习Unity3D开发--NGUI入门基础
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...
- Unity3d 用NGUI制作做新手引导的思路
一.先看下效果 Prefab结构 二.实现思路: 1.prefab上的Panel层级设置成较高 2.背景由5个UISprite拼接起来的,4个(L,R,U,D)当作遮罩,1个镂空(Hollow)当作点 ...
- Unity3D使用NGUI实现简单背包功能
前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简 ...
- 为Textview里面的ImageSpan添加点击响应事件
对于图文混排的TextView,用户在浏览到里面的图片的时候,往往有点击图片preview大图或者preview之后保存图片的需求,这就需要为Textview里面的ImageSpan设置点击响应事件. ...
- MUI框架 按钮点击响应不好的问题解决办法
MUI框架 按钮点击响应不好的问题 实际例子: $(function (){ mui(document.body).on('tap', '.bindchk', function(e) { //触发一次 ...
- 【Unity3D NGUI】----UI尺寸和位置的调整
1 尺寸与位置 通过UIWidget类获取,该类是所有UI元素的基类 在unity中创建一个sprite,如下图所示 这里面这个sprite的大小受几个属性的影响,首先是属性面板里的Size,对应的U ...
- UNITY3D使用NGUI制作自适应UI的总结
原地址:http://www.cnitblog.com/updraft/archive/2013/11/12/88801.html 制作自适应的几个方法1. 使用 UIROOT 里设置自定义高度的方法 ...
随机推荐
- 剔除editor编辑器中的HTML标签
1.剔除editor编辑器中的HTML标签 public static string striphtml(string strhtml) { string stroutput = ...
- 以前写的关于Linux C/C++的博客
以前在CU写的关于Linux C/C++的博客 http://blog.chinaunix.net/uid/25909722/cid-24318-list-1.html
- spring提供的解决中文乱码方案
在表单提交时,如果遇到中文符号会出现乱码问题. Spring提供一个CharacterEncodingFilter过滤器,可用于解决乱码问题. CharacterEncodingFilter使用的时候 ...
- Linux shell basic2 cat find tr
Cat stands for concatenate. Case 1. When the text files have more blank lines, we want to remove the ...
- Hadoop step by step _ install and configuration environment
1.安装centos linux系统. 2.配置静态IP 3.配置防火墙 4.添加hadoop用户 5.检查并安装jdk 配置环境变量 6.配置sshd服务 7.配置ssh免密码登录 8.格式化nam ...
- calc 多项式计算 (STL版和非STL版) -SilverN
计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*” ...
- lock与C#多线程
lock与C#多线程 lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁.简单讲就类似于 你去银行办理业务,一个柜台一次只能操作以为客户,而如果你要到这个柜台办理 ...
- 在springmvc中使用hibernate-validate
在springmvc.xml中加入 <!-- 国际化配置 --> <bean id="localeResolver" class="org.spring ...
- Daikon Forge GUI 制作UI面板
因为是第一次写技术博客,文章的结构和层次估计不标准,但是并不妨碍我想表达的内容. DF-GUI知识 DF-GUI初窥 DF-GUI于今年10月份面世,作为为数不多的unity UI插件,其功能值得一窥 ...
- Jenkins学习六:修改Jenkins用户的密码
很多时候在使用jenkins的时候忘记密码了,遇到这种情况,可以看看下面的讲解. Jenkins专有用户的数据存放在JENKINS_HOME/users目录.users目录的结构你一看就懂.users ...