您的位置:首页 > 其它

音效系统实现:事件音效

2016-03-14 14:48 204 查看
事件音效

事件音效,就是当一个事件发生的时候播放一个音效,所以音效一般依附于一个事件,从代码的角度上来讲就是系统调用某个函数的时候进行条件判断然后播放相应的音效.这一系列的音效比较多,也比较杂,因为音效依附的各个事件一般是完全不相关的.在不考虑音效实现的情况下,现在我们假设已经实现了一个事件音效的接口,每当调用这个接口的时候只需要传给它一个编号,它就能正常的播放音效.以下是几类事件音效.

 

按钮音效:

首先我们要设置按钮的默认音效,这样,当所有按钮被按下的时候就都会有一个默认音效播放.我们需要寻找所有按钮的公共基类,然后将播放音效的接口放在它的LeftUp函数中.但是,这就产生了一个问题,有时我们打开界面的时候需要让一个按钮自动点击下去,比如说我们想让界面被打开的时候一个视图的第一个页签打开,那么我们会在这个界面的初始化函数中调用此按钮的LeftUp,这时就会出现我们不想要的声音.解决方法就是在按钮的基类中做一个标识位,在按钮的LeftUp前后设置一下这个标志位.

而当我们需要一个按钮有一个特殊音效的时候,可以在界面初始化的时候设置一下这个按钮的标识位,让它不产生声音.然后重写这个按钮的LeftUp函数,将音效接口加到重写的函数里,或者把这个音效接口放在某个此按钮按下时必然会调用的函数里.

 

选人音效:

在选人界面切换英雄时播放的音效,需要注意队友选择的英雄或者是自己已经确定了的英雄是不能重复点击的,当点击的时候不应该播放选人音效.这里还有一个功能就是当点击下一个英雄时上一个英雄的选人音效还没有播完,就将上一个音效中断.这里的做法是通过一个全局变量保存当前正在播放的音效,如果下一个音效播放时当前音效还不为空,就将当前音效释放掉.

 

新手引导音效:

这个是依附于新手引导的tips提示播放的.需要注意的是这里需要在各种情况下对当前的音效进行中断,比如说下一个音效播放则中断上一个音效,从选人界面退出中断所有引导音效,从战场退出中断所有引导音效,关闭商店界面时与商店界面相关的引导音效中断.此外还有个需求是提前播放音效,简单来说是让音效在tips出现之前几秒钟就开始播放一个音效,可以查看actinfo中的"提前播放音效"相关代码.

 

系统音效:

比如说双杀,三杀,敌方防御塔被摧毁这些,都属于系统音效,这里最重要的是找到合适的触发时机.比如说防御塔被摧毁音效的触发时机是塔的死亡动作播出时,刚进战场时的欢迎音效的触发时机是计时板上的时间,双杀三杀这些的触发时机是相关Tips显示时.另外,有些系统音效需求一个播放完之后再播放另外一个,这个是通过一个队列实现的,每当一个新的音效产生,就将音效的序号放在队列中,如果当前有正在播放的音效则什么都不做.如果没有正在播放的音效,则从队列中取第一个音效编号播放,同时生成一个计时器,当这个音效播放完之后就播放队列中的下一个音效,直到队列为空.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 音效 实现