之前就只是简单的在每个按钮(或者需要绑定单击事件的UISprite)对象上添加PlaySound组件,但这样就无法统一去设置按钮单击音效的开启与关闭!

由于我都是使用UIEventListener.Get(Button.gameObject).onClick = OnClickFunc;来为按钮绑定单击事件的,因此为了方便控制按钮音效的统一开启与关闭,我写了一个类继承UIEventListener类,然后加了静态接口GetEx来绑定单击事件(之后所有涉及到NGUI事件绑定的,都使用此类继承得来的接口Get或者新加的接口GetEx来绑定事件):

public void UIEventListenerEx : UIEventListener
{
    void OnClick()
    {
        if (onClick != null)
        {
            //这里加了一个按钮音效是否开启的标志位判断
            )
            {
                //播放按钮音效
            }

            //后续代码跟UIEventlistener中的基本一样
            onClick(gameObject);
        }
    }

    static public UIEventListenerEx GetEx()
    {
        //具体代码和UIEventListener一样,就是类名修改成UIEventListenerEx
    }
}

然后所有需要单击事件的对象都使用派生类UIEventListenerEx中的GetEx接口!比如:

 UIEventListenerEx.GetEx(Button.gameObject).onClick = OnClickFunc;

 void OnClickFunc(GameObject go)
 {
   //触发了单击事件
 }

为了保持接口调用一致,其他的事件(比如onPress)绑定仍然使用类UIEventListenerEx,不过是继承得来的相关委托!

另外看了一下NGUI3.6中的UIEventListener类的代码(就几行代码),里面的UIEventListener.Get()函数:如果对象上不存在UIEventListener组件,则动态添加,因此我们在编辑按钮(或者其他需要单击事件的对象)时,不需要添加UIEventListener组件!只要一调用UIEventListenerEx.GetEx()这个函数就动态为对应的对象添加UIEventListenerEx组件了!(当然了,最好游戏一启动,所有的UI事件就都绑定好,而不要到了显示某个界面才去逐一的为对象绑定事件)

end..

PS:有经验的朋友请勿喷!如果有更便捷的方法请告知,不胜感激!

如果此文帮助了你,赞一个呗,让更多人看到这个确实有用!

NGUI 按钮点击音效统一管理开启与关闭的更多相关文章

  1. NGUI 按钮点击事件的两种绑定形式

    面板属性栏绑定 写一个脚本,定义一个Public的方法 Notify中选择物体时,选中自己 然后就可以选择通知到写的那个脚本的里边的public方法 代码绑定 创建一个代码文件,挂载到按钮对象上 代码 ...

  2. 阿里云DMS发布数据库网关服务: 打通网络限制 开启数据库统一管理的万能钥匙

    概述 阿里云数据管理DMS在云端可提供专业的数据库服务,除对标本地数据库软件的基础功能外,还包含性能诊断.数据追踪.跨实例SQL查询(含异构数据库类型之间)等专业性功能,同时提供审计安全和企业级数据库 ...

  3. NGUI 按钮音效问题

    昨天给NGUI的按钮添加音效时,刚开始是自己新建空对象绑定声音的,后来发现NGUI按钮携带button sound组件,直接将音效拖入即可,不用写一行代码,非常简单.但是后来发现添加相同的音效有的按钮 ...

  4. ngui处理不规则按钮点击

    吐个槽  棋牌类游戏做什么中国地图!!!  然后就要用到不规则按钮点击了 你懂的 213的unity虽然已经加入了polygoncollider 2d的支持 但是 但是 但是 是2d的 也就是说如果不 ...

  5. Unity3D NGUI事件监听的综合管理

    首先,将Event Listener挂在按钮上 Event Listener的源码很简单 就是利用C#的时间委托机制 注册了UI场景的事件而已 public class UIEventListener ...

  6. WiFi 统一管理以及设备自动化测试实践

    ATX 安卓设备 WiFi 统一管理以及设备自动化测试实践 (零散知识梳理总结) 此文为转载,感谢作者  目录  众所周知,安卓单台设备的UI自动化测试已经比较完善了,有数不清的自动化框架或者工具.但 ...

  7. 友盟(Swift)-集成、统计用户数量、具体页面访问数量、具体按钮点击数量

    什么是友盟.有什么用? 这些傻瓜问题这里就不解释了,可以自己百度去. 友盟提供的文档和demo都是oc的,这里用swift写了一个小demo,在此分享一下. 步骤1:友盟后台注册应用(iOS),拿到a ...

  8. jquery的2.0.3版本源码系列(6):2880-3042行,回调对象,对函数的统一管理

    目录 1 . 回调对象callbacks的演示 回调的使用有一点像事件绑定,先绑定好,等到有点击事件或者其他时就触发. <script src="js/jquery-2.0.3.js& ...

  9. DataPipeline丨金融行业如何统一管理单个任务下所有API的同步情况

    目前,依靠"手工人力"的电子表格数据治理模式逐渐被"自动智能"的专业工具取代.数据管理员.业务分析师开始采用"平台工具"来梳理主数据.元数据 ...

随机推荐

  1. 前端开发根据url进行页面跳转控制以及实现菜单栏手风琴效果

    html中的元素:<ul id="accordion" class="accordion">  <li class="licss&q ...

  2. hbm.xml 详解总结

    转自 http://blog.csdn.net/tuke_tuke/article/details/49717991 一.hibernate映射文件的作用: Hibernate映射文件是Hiberna ...

  3. 【SSM 8】spring集成Mybatis通用Mapper

    上篇博客中介绍了关于Mybatis底层封装的思路问题,那么这篇博客,就介绍一下怎么引入通用的mapper插件. 备注:本项目通过maven管理 关键版本说明: spring:4.1.3.RELEASE ...

  4. PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)

    设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...

  5. java守护线程的理解

    package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守 ...

  6. 计算机缺失缺少mfc110.dll等相关文件的解决办法

    去https://www.microsoft.com/zh-CN/download/details.aspx?id=30679下载 VSU4\vcredist_x64.exe 和VSU4\vcredi ...

  7. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  8. .net MVC 中枚举类型Enum 转化成 下拉列表的数据源

    第一次写技术博文,记录下工作中遇到的问题,给自己的知识做个备份,也希望能帮助到其他的同学 最近接手了公司的一个新的项目.有个页面涉及相关设计. 分享一个经常用到的吧. 方法一: 直入主题吧 我们的目的 ...

  9. Nodejs学习(一)-Nodejs和express的安装和配置

    声明我的操作系统是ubuntu环境,直接下载了tar文件进行解压安装,步骤如下 1.nodejs官网下载node-v4.6.0-linux-x86.tar.xz文件. youyuan1980@youy ...

  10. 编程模式之观察者模式(Observer)

    观察者模式由四个角色组成:抽象主题角色,抽象观察者角色,具体主题角色,抽象观察者角色,具体观察者角色. 抽象主题角色(Subject):把所有的观察者角色的引用保存在一个集合中,可以有任意数量的观察者 ...