一.综述
Unity自带的音频总的来说就是通过AudioSource来播放AudioClip,通过AudioListener监听,然后这几个组件有很多参数来进行调整
二.音频管理
1.StreamingAssets文件夹
和Assets目录下的Resources文件夹类似,用来存储资源,不同的是,Resources文件夹下的资源真正发布后会被压缩和加密,而StreamingAssets是可以即使在移动设备上也可以通过路径直接获取到原生资源的, StreamingAssets 只能用过www类来读取。
2.音频管理数据组织结构
Private Dictionary<string, EventHandle> _Bnks;
配置:
EventName作为音频的唯一标识, BankName作为音频所在压缩文件的标识,每次播放音频检查所在bank是否已经加载,未加载就进行加载,对每个Bank声明一个RefCount计数,切场景的时候将引用计数为0的Bank卸载。
这里其实可以进行一个优化,可以维护一个常用的Bank的列表,毕竟很多音效切场景后的引用频率也会很高,这些可以不进行卸载,这样可以提高效率。
调用:
1.SoundManager处理和游戏逻辑相关的一些设定,比如音效的全局控制,音量,背景乐等等
2.WwiseManager作为客户端调用的SoundManager和Wwise引擎的中间适配器,处理和音频资源相关的逻辑,如通过eventname调用声音播放,bank缓存,资源加载,卸载等
3.客户端->SoundManager.PlayClip->Wwise.PostEvent->AkSoundEngine.PostEvent(,回调),回调中要返回调用信息(是否调用成功等等)