通常我们的音效系统中包含有 :
总音量
音乐音量
音效音量
人声音量
首先我们创建声音类(sound class)命名为 MainSoundClass,
这个是我们来控制所有的声音文件的。通常我们把它作为项目的Defalut Sound Class。设置在项目设置的Audio页签中。这样当我们导入 音效文件时,会自动把文件的SoundClass 设置为MainSoundClass
然后我们打开MainSoundClass,然后看到
从Children节点创建三个子类 分别命名为
MusicSoundClass
AudioSoundClass
VoiceSoundClass
再这里创建的子类会自动在MainSoundClass所在文件夹中创建。
然后我们创建一个混音,然后命名为SoundMix
这个是我们用来控制整个音效系统的混音,通常我们把它作为项目的Defalut Base Sound Mix。设置在项目设置的Audio页签中。 Defalut Base Sound Mix 在游戏中是默认**的。不需要调用 Push Sound Mix Modifier
然后我们创建一个UMG,设置如下
进度条设置如下
然后每个进度条添加onVauleChanged 事件
然后创建SoundMix类型的对象引用, 命名为SoundMix, 默认值设置为我们创建的SoundMix
然后四个创建SoundClass类型的对象引用,分别命名为
MusicSoundClass
AudioSoundClass
VoiceSoundClass
默认值设置为我们创建的
MusicSoundClass
AudioSoundClass
VoiceSoundClass
然后蓝图中设置如下,(如果没有将SoundMix设置成Defalut Base Sound Mix, 则需要调用下面图中 橘色方框中的push Sound Mix Modifier 将混音**)
然后导入 三个音效文件。
分别将三个音效文件的SoundClass 设置为我们创建的
AudioSoundClass
MusicSoundClass
VoiceSoundClass
并设置三个声音为looping
然后将三个声音文件拖动到世界中。
创建我们的UMG并加入到viewport。
运行游戏,就可以看到我们的效果了
下面是原理
声音类
声音类 是一个属性集合,这些属性可以应用于一系列声音资源。
声音类中的属性可以用作现有值的乘数,并会被分配给声音类的所有声音资源执行。
通过添加 子类 可以创建层级,子类使您可以仅将父类的指定属性传递给子类。您可以在 声音类编辑器 中将类连接起来,该编辑器与 Sound Cue编辑器类似,也使用基于节点的界面。
您还可以向声音类添加 被动混音(参阅下文 混音 部分),它会在声音类播放时自动开始并**(例如,在播放对话声音类时,让音乐声音自动减小)。
混音
混音支持 EQ设置(均衡器设置),以及修改 音量 和 音高 等声音类属性。
多个混音可以同时**,共同作用以形成最终音频效果。您可以在蓝图中,使用 推入混音修饰符(Push Sound Mix Modifier) 和 弹出混音修饰符(Pop Sound Mix Modifier) 节点,直接 推入(**)或 弹出(停用)混音,或者在指定阈值中播放使用指定声音类的声音时,被动**混音。
但是,如果您尝试在大量混音之间切换,则 推入/弹出 方法立刻就会变得非常复杂。这时候就应该使用 设置混音类覆盖(Set Sound Mix Class Override) 蓝图节点。它可以**混音以使用您拥有的任意声音类,并随着时间的推移,在当前声音类和新的声音类之间进行插值。
然后,您可以使用 清除混音类覆盖(Clear Sound Mix Class Override) 让混音恢复为原始设置。
混音资源自身内部(在 内容浏览器 中 双击 该资源即可打开)有一些属性。 您可以为混音指定EQ设置来调节高、中和低频率以及增益。由于多个混音的EQ设置不能组合,因此 EQ优先级(EQ Priority) 使您可以控制任意给定时间应用哪个活动的混音属性。
在声音类部分中,您设置要受混音影响的声音类。对于每个声音类,可以设置 音量(Volume) 或 音高(Pitch) 调节器,设置混音设置是否应用于子类,或者修改 VoiceCenterChannelVolume。
混音部分使您可以指定如何应用或移除混音属性。延迟(Delay) 表示开始应用混音属性之前的时间。淡入时间(Fade in Time) 和 淡出时间(Fade out Time) 指定从无效果到指定属性的过渡速度。时长(Duration) 允许推入的混音在经过指定时长后自动弹出。值-1表示永远不会自动弹出,被动应用的混音不会自动弹出。