码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-11 10:40:36      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

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

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

不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的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

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

标签:

原文地址:http://www.cnblogs.com/shenggege/p/4799755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!