unity3d 扩展NGUI —— 限制UI点击响应间隔

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

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

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

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

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

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

 

先理清思路:

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

不添加BoxCollider不就行了!!

 

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

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

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

 

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

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

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

 1 #region HeadComments
 2 /* ========================================================================
 3 * Copyright (C) 2015 Arthun
 4 *
 5 * 作    者:Arthun
 6 * 文件名称:UILimitClickTime
 7 * 功    能:限制UI点击间隔
 8 * 创建时间:2015/09/10 10:45:42
 9 * 版    本:v1.0.0
10 *
11 * [修改日志]
12 * 修改者: 时间: 修改内容:
13 * 
14 * =========================================================================
15 */
16 #endregion
17 
18 using UnityEngine;
19 
20 public class UILimitClickTime : MonoBehaviour
21 {
22     public float _chickInterval = 1f;
23     private BoxCollider _boxCollider;
24 
25     void Start()
26     {
27         UIEventListener.Get(this.gameObject).onClick = onClick;
28         _boxCollider = this.transform.GetComponent<BoxCollider>();
29     } 
30 
31     private void onClick(GameObject go)
32     {
33         if (_boxCollider != null)
34         {
35             _boxCollider.enabled = false;
36 
37             //这里值得注意的是如果UI被隐藏了,依然可以启用BoxCollider
38             Invoke("enableCollider", _chickInterval);
39         }
40         else
41         {
42             Destroy(this);
43         }
44     }
45 
46     private void enableCollider()
47     {
48         _boxCollider.enabled = true;
49     }
50 }

 

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

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

转载于:https://www.cnblogs.com/shenggege/p/4799755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值