一般游戏提供给玩家的音效和背景音乐的开启和关闭功能。
音效处理。
在场景中设置音效的时候,最好不要把AudioSource分别放到各个游戏物件中,如2DToolKit每个控件中会方便用户自带音效,这样有两个弊端:
一是,因为每个控件距离AudioListener的绑定物件(一般是摄像机)的距离不一定,就会出现声音大小不一的问题。
二是,没法统一管理各个场景中的声音,如开启,关闭的时候。
我把音效文件作为子物件的组件,都放在自定义的该场景的音效物件AudioObj下,并绑定脚本AudioObjScript,在脚本中获取子物件中的AudioSource,并设置public的接口以供需要音效播放的地方调用,同时在Awake中增加检测代码。
在某个全局类中设置对应的全局静态布尔变量IsMuteSound,在设置界面修改变量。每个场景的音效物件先检测IsMuteSound变量,设置子物件中的音效的mute变量即可。
刚才发现,我把每个场景中绑定在摄像机上的AudioListener设置为非激活状态不就可以了吗,何必设置每个子物件中的AudioSource设置为mute呢!
但是,那样的话,场景中的所有声音都不被监听了,这样就没法单独设置音效和背景音乐了。
SO,还是用物件单独绑定吧。
当然,背景音乐的静音处理也是同理的。
对了,场景中的声音物件的位置一定要和AudioListener所在摄像机位置接近啊,不然就听不见了!