Unity教程之-unity3d扩展NGUI限制UI点击响应间隔

 

游戏开发中,当某个按钮按下后给服务器发送某条消息,

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

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

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

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

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

先理清思路:

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

不添加BoxCollider不就行了!!

 

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

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

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

 

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

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

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

#region HeadComments
/* ========================================================================
* Copyright (C) 2015 Arthun
*
* 文件名称:UILimitClickTime
* 功    能:限制UI点击间隔
* 创建时间:2015/09/19 19: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;
}
}

同样这种方法们也可以用在ugui中,好了本篇unity3d教程关于限制UI点击响应间隔 介绍到此结束,下篇我们再会!