Gameframework(Sound初探篇)

1.Sound模块的一些API

首先要知道这个框架常用的Sound模块API,我们先找到SettingForm.cs就可以定位SoundExtension.cs,这个类是静态拓展SoundComponent类,我们可以看到如下函数: 

PlayMusic播放背景音乐
StopMusic暂停背景音乐
PlaySound播放普通声音
PlayUISound播放UI模块的音乐
IsMuted此声音组是否静音
Mute声音组静音或取消静音
GetVolume获取声音的音量
SetVolume修改声音的音量

 2.框架实现了什么?

首先我们生成一下GameForwork.Dll的声音模块的项目依赖图,发现SoundManager是核心的类,声音模块启动会伴随着5大事件(声音播放成功的事件,声音播放失败的事件,播放声音时依赖资源更新事件,重置声音代理事件,播放声音参数更新事件),关系依赖图如下:

Sound模块内部到底实现了什么?SoundManager是对整体声音模块的控制,类里面定义的一些变量就知道它大概的用处了,具体代码如下:

private readonly Dictionary<string, SoundGroup> m_SoundGroups;//所有声音组
private readonly List<int> m_SoundsBeingLoaded;//已经加载的声音
private readonly HashSet<int> m_SoundsToReleaseOnLoad;//已经是否的声音
private readonly LoadAssetCallbacks m_LoadAssetCallbacks;//资源成功加载的回调
private IResourceManager m_ResourceManager;//资源管理器
private ISoundHelper m_SoundHelper;//声音辅助器
private int m_Serial;//声音的序列编号,从0开始递增的
private EventHandler<PlaySoundSuccessEventArgs> m_PlaySoundSuccessEventHandler;//声音播放成功事件
private EventHandler<PlaySoundFailureEventArgs> m_PlaySoundFailureEventHandler;//声音播放失败的事件
private EventHandler<PlaySoundUpdateEventArgs> m_PlaySoundUpdateEventHandler;//声音更新的事件
private EventHandler<PlaySoundDependencyAssetEventArgs>m_PlaySoundDependencyAssetEventHandler;//声音的依赖资源加载

ISoundHelper主要是实现资源的创建和释放的。

ISoundAgentHelper主要是挂载声音上的辅助类,声音的各种属性获取和设置,控制声音的播放、暂停、静音、恢复播放等等。

ISoundGroupHelper主要是获取或设置声音组辅助器所在的混音组。

ISoundAgent主要是单个声音代理类,声音的各种属性获取和设置,控制声音的播放、暂停、静音、恢复播放等等。

ISoundGroup主要是获取声音组的一些属性,和控制声音组的播放、暂停、静音、恢复播放,里面有List<SoundAgent>的列表。

3.Audio Mixer的用处

在游戏中,通常我们需要一个模块的去控制声音的控制音量,比如UI模块的整体音量的修改,场景中的音量的修改。我们可以将用一个List<Audio Source>来表示此声音组,但是Unity已经帮我们搞好了一个组件,那就Audio Mixer组件,我们双击下项目中的看一下作者定义了什么,如图所示:

可以看到一个声音单独对应一个AudioMixerGroup,我们可以看到每个声音组下有3个按钮S,M,B。S按钮表示此声音组单独播放,M表示把此声音组静音,B表示绕过其他声音组中的所有影响。每一个声音组可以添加Send 表示设置接收者,添加Receive表示设置接收者,比如你当你播放Sound组的时候,你可以让UISound组的音量调低等等事件,这里就说这么多,其他用法大家自觉探究吧。

AudioMixer介绍:https://docs.unity3d.com/Manual/AudioMixerOverview.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值