当某个按钮按下后给服务器发送某条消息
如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据
不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的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