UE5 Audio
音频用于指代音乐、对话和音效等事物。 音频还有助于增加玩家和游戏之间的沉浸感。音乐会激起情绪反应。对话发展人物和故事。声音效果提供反馈和可信度。
- 播放音乐并循环播放
- 在动画中的特定点播放音效
- 每次播放时调节声音的音高
- 根据声音在 3D 空间中的位置平移和调整声音的音量
- 使用 UI 独立控制音乐和音效的音量
入门
下载起始项目并解压缩。通过导航到项目文件夹并打开SkywardMuffin.uproject打开项目。
按播放开始游戏。游戏的目标是在不掉落的情况下接触尽可能多的云。单击鼠标左键跳到第一朵云。
游戏很放松,不是吗?为了强调放松的感觉,要做的第一件事就是播放一些平静的钢琴曲。
玩音乐
转到内容浏览器并导航到音频文件夹。在这里,将找到将在本教程中使用的所有声音。可以将鼠标悬停在他们的图标上,然后单击出现的播放图标来收听他们的声音。
播放音乐就像将声音资源拖放到视口中一样简单。但是,音乐只会播放一次。这是因为需要在资产中手动启用循环。双击S_Music将其打开。
将出现一个带有单个详细信息面板的新窗口。转到Sound Wave部分并启用Looping。
接下来,返回到主编辑器,然后将S_Music资源拖动到视口中。
这将创建一个以S_Music作为声源的AmbientSound actor 。该演员将在游戏开始时自动播放S_Music 。
按播放来收听音乐。17 秒(音乐的长度)后,它将再次循环播放。
接下来,将在松饼走动时添加声音效果。为此,将使用动画通知。
什么是动画通知?
动画通知允许在动画中的特定点触发事件。可以通过许多不同的方式使用它们。例如,可以创建一个 Notify 来生成粒子效果。
在此游戏中,松饼一接触地面就会出现重新启动按钮。但是,使用 Notify,可以让它出现在死亡动画的结尾。
在本教程中,将通过动画通知在每只脚接触地面时播放声音。
创建动画通知
导航到Characters\Muffin文件夹,然后打开SK_Muffin_Walk。这将打开动画编辑器。
在视口下方的面板中,将看到一个名为Notifies的区域。浅灰色区域是Notify Track。这是将创建和管理的通知的地方。
第 10 帧和第 22 帧是每只脚接触地面的时间,因此需要在这两个点创建通知。要创建通知,请右键单击通知轨道并选择添加通知\播放声音。这将创建一个名为PlaySound的通知。
接下来,需要定位通知,使其出现在第 10 帧。
移动动画通知
很难知道将 Notify 移动到哪里,因为 Notify Track 不指示第 10 帧的位置。但是,可以使用时间轴显示标记。
首先,转到位于面板底部的时间轴。拖动并单击红色播放头并在**当前帧为10时松开。确保先暂停它!
现在,通知轨道将有一条红线指示播放头的位置。
拖动并单击**PlaySound Notify并在它与红线对齐时松开。
接下来,需要告诉 Notify 播放脚步声。
播放脚步声
左键单击PlaySound将其选中,然后转到“详细信息”面板。在Anim Notify部分,将Sound设置为S_Footstep。
接下来,对另一只脚重复该过程。请执行下列操作:
- 创建另一个播放声音通知
- 将通知移动到第 21 帧
- 将 Notify 的声音设置为S_Footstep
现在,只要步行动画到达第 10 帧和第 21 帧,Notifies 就会触发并播放S_Footstep声音。
关闭SK_Muffin_Walk然后返回主编辑器。按播放并开始四处走动以听到脚步声。
反复聆听脚步声后,玩家可能会注意到一些事情。每次都是一样的音效!要是有办法每次都能改变声音就好了。
在下一节中,将在玩家触摸云时播放音效。但这一次,每次使用Sound Cue都会改变声音。
什么是声音提示?
Sound Cue 是一种资产,可让操纵多个声音并将它们组合起来。然后可以将 Sound Cue 视为它自己的声音。在任何可以使用常规声音的地方,都可以使用 Sound Cue。
以下是使用连接器连续播放三个声音的 Sound Cue 示例:
如果改为使用随机节点,则每次播放 Sound Cue 时都可以选择随机声音。
在本教程中,将创建并使用 Sound Cue 来更改声音的音调。
创建声音提示
首先,导航回Audio文件夹。将使用S_Pop作为音效,因此需要为其创建一个 Sound Cue。为此,右键单击S_Pop并选择Create Cue。
这将创建一个名为S_Pop_Cue的新 Sound Cue 资产。双击S_Pop_Cue以在 Sound Cue 编辑器中将其打开。
注意:此编辑器与材质编辑器非常相似,因此我不会介绍它。如果不熟悉材质编辑器,可以在入门教程中了解它。
在图中,将看到两个节点:Wave Player: S_Pop和Output。Sound Cue 将播放连接到输出节点的任何内容(在本例中,它将播放S_Pop声音)。可以通过转到工具栏并单击播放提示来收听声音提示。
接下来,将学习如何改变声音的音高。
改变声音的音调
要更改声音的音调,需要使用调制器节点。创建一个并像这样连接它:
现在,需要定义音调可以改变多少。选择Modulator节点,然后转到 Details 面板。将看到两个与音高相关的字段:Pitch Min和Pitch Max。小于 1 的值表示音高可以降低,反之亦然。值为 1 表示音高将保持不变。
对于本教程,音调应该只能提高。将Pitch Min设置为1.0并将Pitch Max设置为2.0。
现在,每次播放 Sound Cue 时,声音的音高都会介于原始音高和原始音高的两倍之间。
接下来,需要在玩家触摸云时播放 Sound Cue。
播放声音提示
返回主编辑器并导航至Blueprints文件夹。打开BP_Cloud,然后打开CloudTouched功能。每当玩家触摸云朵时都会执行此函数,因此它是播放 Sound Cue 的理想场所。
可以使用两个节点来播放声音:
- 播放声音 2D:播放没有任何衰减或空间化的声音(将在本教程的后面部分了解这些)。将此节点用于游戏世界中不“存在”的声音,例如音乐和 UI 声音。
- 在某个位置播放声音:在 3D 空间中的某个位置播放声音。如果希望声音根据玩家的位置和方向发生变化,请使用此节点。
云既然存在于游戏世界中,那么声音也应该存在于游戏世界中。将Play Sound at Location节点添加到节点链的末尾。
然后,将Sound设置为S_Pop_Cue。
现在,每当玩家触摸云时,S_Pop_Cue就会播放。
单击编译,然后返回到主编辑器。按播放并开始玩游戏。每次你触摸一朵云,你应该听到相同的声音,但音调不同。
声音的音高发生变化,但听起来不像是在 3D 空间中。为此,需要将声音空间化。
什么是空间化?
空间化是一个过程,旨在给人以音频存在于 3D 空间中的印象。来自左侧的声音将在左耳中听到,反之亦然。
除了增加沉浸感之外,空间化还可以帮助游戏玩法。在《守望先锋》和《反恐精英》等竞技游戏中,空间化音频可以帮助玩家辨别其他玩家的位置。
在本教程中,将使用空间化根据云的位置对云的声音进行平移。
启用空间化
有两种方法可以为 Sound Cue 启用空间化:
- 声音衰减资产:该资产包含与衰减和空间化相关的设置。可以将此资产分配给不同的声音,以确保它们都具有相同的设置。
- 覆盖衰减:可以在 Sound Cue 中指定设置,而不是使用 Sound Attenuation 资产。这允许为单个声音提示创建设置。
对于本教程,将使用第二种方法。打开S_Pop_Cue,然后转到“详细信息”面板。找到Attenuation部分并启用Override Attenuation。这将启用衰减覆盖部分。
要检查是否启用了空间化,请单击Attenuation Overrides旁边的箭头。Spatialize设置将指示的声音是否空间化。
这就是设置,所以继续并关闭S_Pop_Cue。接下来,需要指定声音在 3D 空间中的位置。
在 3D 空间中播放声音
打开BP_Cloud然后创建一个GetActorLocation节点。然后,将其连接到Play Sound at Location节点的Location引脚。
现在,声音将在与云相同的位置播放。
单击编译,然后返回到主编辑器。按播放并开始触摸云。应该听到似乎来自不同位置的声音。
注意:默认情况下,相机是音频监听器。这意味着将从相机的角度听到声音。如果想更改哪个演员是听众,可以使用Set Audio Listener Override节点。
可能已经注意到一些云层下有雨。但是,如果听起来不像在下雨,那它就不是真正的雨云!接下来,将添加雨声并使用衰减根据距离的远近来改变音量。
添加雨声
可以使用音频组件代替使用节点来播放雨声。使用组件的优势之一是它会自动在云端播放。
打开BP_Cloud,然后转到“组件”面板。添加一个新的Audio组件并将其命名为RainAudio。
转到“详细信息”面板并找到“声音”部分。将声音更改为S_Rain。
正常的云不应该播放雨声。这意味着需要为普通云停用RainAudio。为此,向下滚动到“激活”部分并禁用“自动激活”。
现在,需要为雨云激活RainAudio 。执行此操作的一个好地方是EnableRain函数。如果云应该是雨云,则执行此函数。打开EnableRain函数并添加突出显示的节点:
接下来,需要启用衰减并定义衰减设置
设置衰减
转到组件面板并选择RainAudio。转到“详细信息”面板并转到“衰减”部分。启用覆盖衰减设置。
衰减设置复制了声音如何随着距离而失去音量。在Attenuation Overrides区域下,将使用两个设置:
- 半径:玩家在音量开始减弱之前可以达到的最大距离
- Falloff Distance(衰减距离):玩家在声音消失之前需要达到的距离。此距离是半径之外的距离。
看看下面的例子:
当玩家在内圈(由Radius定义)内时,音量为 100%。当玩家从内圈移动到外圈的边缘(由Falloff Distance定义)时,音量逐渐变为 0%。
对于本教程,将Radius设置为300并将Falloff Distance设置为400。
这意味着当玩家距离声音小于300个单位时,声音的音量将为 100%。当玩家的距离接近700 (300 + 400) 个单位时,音量将衰减到 0%。
如果云消失时玩家还没有移出衰减范围,则声音会被切断。要解决此问题,可以淡出声音。
淡出声音
切换到 Event Graph 并找到FadeOut事件。可以通过转到 My Blueprint 面板并转到Graphs部分来执行此操作。双击**EventGraph下列出的FadeOut 。
将突出显示的节点添加到节点链的末尾:
FadeOut在玩家触摸云时执行。时间线( FadeTimeline ) 节点输出一个值 ( Alpha ),该值在指定的持续时间内从 1 变为 0。通过使用此值, RainAudio的音量将逐渐减弱。
注意:可以双击**时间轴节点将其打开并查看其工作方式。如果想了解有关时间轴的更多信息,请查看官方文档。
需要先更改S_Rain中的一项设置,然后才能听到它的声音。当声音的音量为 0% 时,它将停止播放。由于音频开始时超出了收听范围,因此S_Rain的音量将为 0%。当进入收听范围时,将听不到任何声音。
可以使用静默时虚拟化设置来解决此问题。此设置将始终播放声音,无论其音量如何。
单击Compile,然后关闭BP_Cloud。导航到音频文件夹并打开S_Rain。转到Sound部分并启用Virtualize when Silent。
现在,S_Rain即使静音也会播放。关闭S_Rain,然后返回主编辑器。按播放,然后移动到雨云的范围内以听到下雨的声音。
在最后一部分,将使用Sound Classes和Sound Mixes来控制声音的音量。
声音类别和混音
声音类是对多种声音进行分组的简单方法。例如,可以将一个类中的所有音乐和音效分组到另一个类中。
要在游戏过程中调整声音类的属性(音量、音调等),需要使用混音。混音基本上是一个表格,表格中的每个条目都是一个声音类。每个条目都包含声音类应该有的调整。
以下是混音可以包含的内容的示例:
通过使用上面的 Sound Mix,Music类中的每个声音都将以一半的音量播放。Effects类中的每个声音的音高都会加倍。
首先,将创建声音类。
创建声音类
在本教程中,将独立调整音乐和效果的音量。这意味着将需要两个声音类。在内容浏览器中,单击添加新项并选择Sounds\Sound Class。将声音类重命名为S_Music_Class。
创建另一个声音类并将其命名为S_Effects_Class。
接下来,需要将每个声音分配给一个声音类。首先,你会为音乐而做。打开S_Music,然后找到“声音”部分。将声音类更改为S_Music_Class。
完成后,关闭S_Music。
接下来是音效。无需打开每个声音并分配声音类别,可以一次完成所有操作。首先,选择以下资产:
- S_脚步声
- S_Pop_Cue
- S_雨
然后,右键单击其中一个选定的资产。通过 Property Matrix选择Asset Actions\Bulk Edit 。这将在属性矩阵编辑器中打开资产。
属性矩阵编辑器允许同时编辑常用属性。
转到 Details 面板并展开Sound分支。要选择声音类别,请单击声音类别右侧的网格图标。
选择S_Effects_Class,然后关闭属性矩阵编辑器。
现在所有的声音都在它们适当的声音等级中。接下来,将创建混音并使用蓝图对其进行调整。
创建和调整混音
在内容浏览器中,单击添加新项并选择Sounds\Sound Mix。将混音重命名为S_Volume_Mix。
要控制每个声音类的音量,将使用滑块。我已经创建了一个带有两个滑块的小部件供使用。导航到UI文件夹并打开WBP_Options。
要调整音量,需要使用这些滑块的值并将其输入混音。将首先为音乐执行此操作。
切换到 Graph 模式,然后转到 My Blueprints 面板。在变量部分下,选择MusicSlider。转到 Details 面板并单击On Value Changed旁边的按钮。
这将创建On Value Changed (MusicSlider)事件。只要移动滑块手柄,就会触发此事件。
现在,需要在S_Volume_Mix中设置**S_Music_Class的音量。为此,需要使用Set Sound Mix Class Override节点。此节点允许指定混音和声音类。如果 Sound Class 不在 Sound Mix 中,它将被添加。如果它已经在混音中,它将更新。
添加一个Set Sound Mix Class Override节点并设置以下选项:
- 在混音修改器中: S_Volume_Mix
- 在声音类别中: S_Music_Class
- 淡入时间: 0(这将确保音量调整是即时的)
接下来,像这样连接的节点:
对EffectsSlider重复这些步骤。将In Sound Class引脚更改为S_Effects_Class。
现在,只要滑块的值发生变化,S_Volume_Mix就会调整相关 Sound Class 的音量。
在任何这些工作之前,需要激活混音。
激活混音
对于这种情况(使用 UI 进行音量控制),最好在游戏开始时激活混音。这样 Sound Class 将自动使用 Sound Mix 的音量调整。但是,为了简单起见,将在小部件中激活混音。
创建一个Event Pre Construct节点。这类似于蓝图中的Event BeginPlay节点。
要激活混音,需要使用Push Sound Mix Modifier节点。创建一个并将其连接到Event Pre Construct。然后,将In Sound Mix Modifier设置为S_Volume_Mix。
这将在WBP_Options生成时激活S_Volume_Mix。
单击Compile,然后关闭WBP_Options。按播放键,然后按M键调出滑块。调整滑块以影响每个声音类的音量。