之前就只是简单的在每个按钮(或者需要绑定单击事件的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:有经验的朋友请勿喷!如果有更便捷的方法请告知,不胜感激!

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

最新文章

  1. C#开发Windows服务 入门
  2. MySQL(四) 数据表的插入、更新、删除数据
  3. 第65课 C++中的异常处理(下)
  4. 【原】storm源码之storm代码结构【译】
  5. Deep Learning 深度学习 学习教程网站集锦(转)
  6. raid0,raid1,raid10,raid5,raid50,raid6,raid60的功能总结简述
  7. poj3207 Ikki’s Story IV – Panda’s Trick
  8. AVA取整以及四舍五入
  9. !!Python字典增删操作技巧简述+Python字典嵌套字典与排序
  10. 状态机的c语言编程
  11. jQuery 事件 - error() 方法
  12. 发一个讨论帖,如果结果被采纳的话可以给一份adb 代码,以及我封装的ADBLIB
  13. STM32学习之路-LCD(3)<显示图片>
  14. Dubbo Zookeeper
  15. 切糕[HNOI2013]
  16. 使用Jquery.js框架和CSS3实现3D相册的制作
  17. [C#]使用控制台获取天气预报
  18. 4-16 css
  19. Keepalive工作原理
  20. AIX动态增加SWAP空间

热门文章

  1. range for query
  2. Echart图表入门
  3. 浅谈数位DP
  4. LR12.53—第5课:创建负载测试场景
  5. Android-----test----monkeyrunner
  6. js监听浏览器,关闭,刷新
  7. SQL计算时间差,要精确到小时分钟秒
  8. 【转】Java集合类
  9. JVM调优
  10. Python自动化 【第十二篇】:Python进阶-MySQL和ORM