
实现音效
Tutorial
Beginner
+0XP
30 mins
(38)
Unity Technologies

在本教程中,你将:
- 实现静态音效
- 实现接触音效
- 为这些音效添加隐藏式字幕
Languages available:
1. 概述
你现在已经创建基本的交互式 VR 体验,接下来可以使用音频使该体验更具吸引力并更加让人身临其境。在本教程中,你将向原型房间中的对象添加静态音效和接触音效。你还将添加隐藏式字幕,从而使你的 VR 体验更具包容性。
2. 开始之前
在本教程中,你将使用 VR 初学者 Unity 项目和 VR 硬件。开始之前:
1.打开 VR 初学者 Unity 项目。
2. 确认你的硬件已准备就绪。如果你将 Oculus Link 与 Oculus Quest 搭配使用,请立即通过 Oculus 应用程序进行启用并连接。
3. 在 VR 中实现基本音效
你可以像非 VR 体验一样,在 Unity 中向 VR 体验添加声音。Unity 还可以将音频空间化(使音频听起来像是来自 3D 环境中的音频源)。要使用 Unity 的音频空间化功能,你需要确保:
- 场景中的 Camera 游戏对象具有 Audio Listener 组件,因此 Unity 可以基于 VR 头盔的位置,通过头盔正确地将声音空间化
- 作为 VR 体验一部分的声音将 Audio Source Spatial Blend 设置为 3D,以便获得更加身临其境的体验
本 Unity 项目中使用自定义菜单创建的原型场景中已默认进行此配置。
4. 向对象添加静态音效
首先,请向原型房间添加空间化的循环声音:保险丝盒发出的低沉嗡嗡声。
要向 Fusebox 游戏对象添加声音,请执行以下操作:
1. 在 Hierarchy 中,选择 Fusebox 游戏对象。
2.在 Inspector 中,选择 Add Component。搜索“Audio Source”,然后将此组件添加到该游戏对象。
3. 在 Project 窗口中,选择 Assets > VR Beginner > Audio。找到 SFXDoorHumLoop 音频文件。
4.将 SFXDoorHumLoop 从 Project 窗口拖到 Audio Source 组件顶部的 Audio Clip 属性中。
5.在 Audio Source 组件中,启用 Play On Awake 和 Loop。
6.将 Spatial Blend 滑动条设置为 3D(数值字段中为 1)。
7. 选择灰色箭头以展开 3D Sound Settings(如果尚未打开)。
8.设置以下属性值:
- Volume Rolloff 设置为 Linear Rolloff,表示离音频源越远,就越安静
- Min Distance 设置为 0.2,用于定义达到最大音量的距离
- Max Distance 设置为 4,用于定义开始播放声音的距离
9. 按 Ctrl + S 保存所做的更改。
10.现在,你可以测试音效。你在保险丝盒旁边的传送器上时,会听到声音很响亮。如果你在更远位置创建传送器,声音会微弱得多。如果你移动头部,音频就会像在现实生活中一样变化。
5. 在 VR 中使用隐藏式字幕
隐藏式字幕是一项可以提高 VR 体验包容性的功能。本学习项目包括一个示例原型隐藏式字幕系统,指示你如何在 VR 体验中实现这一功能。
原型隐藏式字幕系统由三个脚本组成:
- CCDatabase,此脚本将给定的音频剪辑与一行或多行文本相关联,并显示每行的时间
- CCSource,此脚本可以添加到具有 Audio Source 组件(就像 Fusebox 组件)的对象,并为该对象启用隐藏式字幕
- CCManager,此脚本检查场景中是否有已启用隐藏式字幕的音频源,并在用户位于对象正面时显示文本
这些脚本全都位于 Assets > VR Beginner > Scripts > System 中。
6. 为音效添加隐藏式字幕
让我们为保险丝盒音效添加隐藏式字幕:
1.在 Project 窗口中,选择 Assets 文件夹。右键单击,然后选择 Create > ClosedCaption > CCDatabase 以创建新的数据库资源。
2. 按 F2 并将此资源重命名为 TutorialCCDatabase。
3. 双击资源图标以打开数据库编辑器。
4.在 Project 窗口中,选择 Assets > VR Beginner > Audio。将 SFXDoorLoopHum 从 Project 窗口拖到 TutorialCCDatabase 窗口中。这是你向保险丝盒添加的音效。
5.选择显示了音效名称的新按钮。
6. 选择 New Line 以便在数据库中创建一行新文本。将“[ Humming ]”添加到新的 Line 字段。
7. 由于此音效长度超过三秒,让我们为隐藏式字幕创建另一行文本以便查看在 Unity 项目中的显示效果。再次选择 New Line 并进行以下设置:
- Time 设置为 1.5
- Line 设置为“[ More humming ]”
这意味着声音播放 1.5 秒后,第二行文本将会显示。现在你可以关闭数据库编辑器窗口。
8.在 Hierarchy 中,选择 CCSystem 游戏对象。
9.在 Inspector 中,使用 Database 字段右侧的选择器按钮,将新的 TutorialCCDatabase 选为隐藏式字幕系统读取的数据库。
10. 按 Ctrl + S 保存所做的更改。
7. 将保险丝盒设置为隐藏式字幕源
你现在已将隐藏式字幕添加到音效,接下来需要将 Fusebox 游戏对象设置为场景中隐藏式字幕的源:
1.在 Hierarchy 中,选择 Fusebox 游戏对象。
2.在 Inspector 中,选择 Add Component。搜索并添加 CC Source 组件。
3.在 Project 窗口中,选择 Assets > VR Beginner > Prefabs > System。
4.将 CCCanvas 预制件从 Project 窗口拖到 Inspector 中 CC Source 组件的 Canvas Prefab 字段。
此画布定义隐藏式字幕的显示方式。如果你对 Unity 的 UI 开发拥有较多经验,可以为你的 VR 体验自定义 UI。
5.你可以使用 CC Source 组件中的以下字段,对字幕显示效果进行一些基本的调整:
- 启用 Always Tracked。根据此设置,在用户的视图中心会显示一个箭头,指向正在运行的带有隐藏式字幕的对象。这样可以指示用户的关键音频源,例如提供游戏玩法信息的音频源。
- 将 Max Distance 设置为 2。这是显示字幕的最大距离。保险丝盒字幕将在你站在保险丝盒旁边时显示,但你在桌台旁边时不会显示此字幕。
- 将 Scale 设置为大于 1 以增大默认字幕大小,或者设置为小于 1 以减小此大小。
6. 按 Ctrl + S 保存所做的更改。
7.现在,你可以测试音效隐藏式字幕。当你站在保险丝盒旁边时,字幕文本应该会出现,并随着音效循环而循环。当你移回到盒型桌台时,应该看不到隐藏式字幕文本。如果你启用了 Always Tracked,应该会看到一个指示音效方向的箭头。
8. 向对象添加接触音效
VR 初学者项目包括一个名为 SFXPlayer 的自定义系统。该系统使脚本可以播放 SFX(特效)声音。默认情况下,使用自定义菜单创建的原型场景中包括此系统。本 Unity 项目的一个特色是自定义脚本,可以设置一个可交互对象与另一个对象接触时播放的声音。例如,可抓取的手电筒掉到桌台上的时候,此脚本将播放声音。
要向场景中的可抓取对象添加接触音效,请执行以下操作:
1.在 Hierarchy 中,选择可交互项游戏对象。
2.在 Inspector 中,选择 Add Component 按钮。
3.搜索并选择 Contact Sound Player 组件。这是为本 Unity 项目创建的自定义组件。
4. 在 Project 窗口中,选择 Assets > VR Beginner > Audio,然后选择音效文件。尝试文件夹中的四个 SFXImpactHeavy 音频剪辑之一。
5.将文件从 Project 窗口拖到 Contact Sound Player 组件的 Clips 属性上。
如果对多个音效执行此操作,则对象与另一对象接触时,脚本将随机选择一个音效。尝试添加全部的四个不同 SFXImpactHeavy 音频剪辑。
6. 按 Ctrl + S 保存所做的更改。
7.现在,你可以在 VR 中测试音效。拾取选定的可交互对象并将该对象放到其中一个方桌上。你应该会听到添加到 Contact Sound Player 组件的音效之一。
9. 考查:为接触音效添加隐藏式字幕
你现在已经为对象添加接触音效,接下来请尝试为该音效添加隐藏式字幕。
切记,你需要:
- 将音效添加到数据库,并设置音效的字幕文本和时间
- 在 Contact Sound Player 组件中,启用 Closed Captioned 复选框
- 测试以检查你是否已成功实现隐藏式字幕
如果你需要更多指导来完成本考查,请复习本教程的步骤 6 和 7。
10. 总结
在本教程中,你实现了音频和隐藏式字幕来增强你的 VR 体验。接下来,你将学习如何设置 Unity 项目以进行 UI 开发。