zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Nginx资源合并优化模块nginx-http-concat
    Nginx的模块http_secure_link_module
    Nginx前段加速模块pagespeed-ngx
    Naxsi+nginx前段保护
    Selenium for C#的入门Demo
    C# 比较两个数组中的内容是否相同的算法
    C#读取自定义的config
    关于分布式计算之Actor、AKKA和MapReduce
    numpy模块的基本使用
    python单元测试库
  • 原文地址:https://www.cnblogs.com/shenggege/p/4799755.html
Copyright © 2011-2022 走看看