NGUI 按钮点击音效统一管理开启与关闭

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

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

public void UIEventListenerEx : UIEventListener
{
    void OnClick()
    {
        if (onClick != null)
        {
            //这里加了一个按钮音效是否开启的标志位判断
            if (mIsOpenClickSound != 0)
            {
                //播放按钮音效
            }
            
            //后续代码跟UIEventlistener中的基本一样
            onClick(gameObject);
        }
    }

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

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

1 UIEventListenerEx.GetEx(Button.gameObject).onClick = OnClickFunc;
2 
3 void OnClickFunc(GameObject go)
4 {
5   //触发了单击事件
6 }

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

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

end..

 

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

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

转载于:https://www.cnblogs.com/AlphaAI/p/4343390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值