NGUI 按钮点击音效统一管理开启与关闭
2024-08-27 14:01:44
之前就只是简单的在每个按钮(或者需要绑定单击事件的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:有经验的朋友请勿喷!如果有更便捷的方法请告知,不胜感激!
如果此文帮助了你,赞一个呗,让更多人看到这个确实有用!
最新文章
- C#开发Windows服务 入门
- MySQL(四) 数据表的插入、更新、删除数据
- 第65课 C++中的异常处理(下)
- 【原】storm源码之storm代码结构【译】
- Deep Learning 深度学习 学习教程网站集锦(转)
- raid0,raid1,raid10,raid5,raid50,raid6,raid60的功能总结简述
- poj3207 Ikki’s Story IV – Panda’s Trick
- AVA取整以及四舍五入
- !!Python字典增删操作技巧简述+Python字典嵌套字典与排序
- 状态机的c语言编程
- jQuery 事件 - error() 方法
- 发一个讨论帖,如果结果被采纳的话可以给一份adb 代码,以及我封装的ADBLIB
- STM32学习之路-LCD(3)&;lt;显示图片&;gt;
- Dubbo Zookeeper
- 切糕[HNOI2013]
- 使用Jquery.js框架和CSS3实现3D相册的制作
- [C#]使用控制台获取天气预报
- 4-16 css
- Keepalive工作原理
- AIX动态增加SWAP空间