音频对象

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Roblox 的模块化音频对象可让您在体验中动态控制音效和语音聊天。几乎每个音频对象都对应于现实世界的音频设备,它们都功能齐全地共同捕获和播放音频,与物理对应的音频一样。

例如,每个音频对象在概念上都属于以下类别:

  • 生成音频流的对象,例如音频播放器。
  • 那些 消耗 音频流的对象,例如音频发射者。
  • 修改音频流的对象,例如音效。
  • 从一个音频对象传递到另一个音频对象的对象,例如电线 传递 音频。

当你阅读本指南并了解这些音频对象如何共同发出声音时,你将学习如何准确地从体验中捕获和传送音乐、音效和人声,以及相反的方向。

播放音频

要在体验中播放音频,了解每个可用的音频对象的角色很重要:

  • 一个 AudioPlayer 加载并播放使用设置的音频资产ID的 音频文件
  • 一个 AudioEmitter 是一个发射音频到 3D 环境的 虚拟扬声器 * 一个 AudioListener 是一个 虚拟麦克风 ,可以从 3D 环境中拾取音频。
  • 一个 AudioDeviceOutput 是现实世界中的 物理硬件设备 ,例如扬声器或耳机。
  • 一个 AudioDeviceInput 是现实世界内的 物理麦克风
  • 一个 Wire 传递音频流 从一个音频对象到另一个。

您是否要将这些音频对象直接发送到玩家的扬声器或耳机或从 3D 空间的对象上发送音频取决于您是否想要直接向玩家发送音频。以下部分详细描述了两种场景。

2D 音频

2D音频 是从特定位置播放的非定向声音,在 3D 空间中无论玩家的位置或方向,都保持相同的音量。这类音频需要三个音频对象:

  • 用于产生音频串流的音频播放器。
  • 在现实世界播放音频流的物理硬件设备。
  • 一根用于将音频流从音频播放器传送到输出设备的电线。

为了展示如何在 Studio 配置这些音频对象以实现 2D 音频,以下图表将每个对象与其实际世界的音频设备对应进行比较。总概括:

  • AudioPlayer 加载并播放您的音频资产,并设置为指定的设置。
  • AudioDeviceOutput 允许玩家通过扬声器或耳机听到音频。
  • Wire 连接到音频播放器使用其 SourceInstance 属性,以及使用其 TargetInstance 属性的物理硬件设备。然后它作为桥梁,将音频流从音频播放器传送到玩家的输出设备。

要播放非定向音频:

  1. 探索器 窗口中,导航到 音频服务 ,然后
    1. 插入一个 音频播放器 对象来创建一个音频源。
    2. 插入一个 音频设备输出 对象来创建一个播放整个体验的扬声器。
    3. 插入一个 电线 对象来将音频播放器的流连接到扬声麦克风。
  2. 选择 音频播放器 ,然后在 属性 窗口中,
    1. 资产ID 设置为有效的音频资产ID。如果您没有自己的自定义音频,您可以在创作者商店中找到免费使用的音频资产。
    2. 启用 循环 ,如果你想要你的音频不断重复。
    3. 音量 设置为你想要播放音频的音量单位。
  3. 选择 电线 ,然后在 属性 窗口中,
    1. 源实例 设置为 音频播放器 以指定您想要在特定音频播放玩家内播放音频。
    2. 目标实例 设置为 音频设备输出 以指定您想要从特定扬声麦克风播放音频。

从这里,您可以通过脚本触发非定向音频,让玩家加入体验或作为游戏事件或 UI 交互的结果播放。对于这些使用案例的代码示例参考,请参阅 添加 2D 音频 教程。

3D 音频

3D音频 是从3D空间特定位置播放的环向声音,根据玩家的位置和对声音的偏向增加或减少音量。这类音频需要六个音频对象:

  • 用于产生音频串流的音频播放器。
  • 一种音频发射器,可以在环境中发送音频流。
  • 一个收听器,从环境中接收音频流。
  • 在现实世界播放音频流的物理硬件设备。
  • 两根线:一个从音频播放器传送音频流到发射器,另一个从收听者传送到输出设备。

为了展示如何在 Studio 配置这些音频对象以实现 3D 音频,以下图表将每个对象与其实世界音频设备的对应进行比较。总概括:

  • AudioPlayer 加载并播放您的音频资产,并设置为指定的设置。
  • 3D空间中的AudioEmitter的父辈位置决定了该音频在环境中发射的位置。
  • AudioListener 从本地摄像头或玩家角色的 Humanoid.RootPart 中拾取音频,取决于你在哪里设置默认列表位置。
  • AudioDeviceOutput 允许玩家通过扬声器或耳机听到音频。
  • 第一个 Wire 连接到音频播放器使用其 SourceInstance 属性,以及使用其 TargetInstance 属性的发射器。然后它作为桥梁,将音频流从音频播放器传送到发射器。
  • 第二个 Wire 连接到收听器使用其 SourceInstance 属性,以及使用其 TargetInstance 属性的物理硬件设备。然后它作为桥梁,将音频流从收听者传送到玩家的输出设备。

要播放位置音频:

  1. 选择在玩家生成到体验时创建 音频收听器 的位置。

    1. 探索器 窗口中,选择 音频服务
    2. 属性 窗口中,将 列表收听位置 设置为以关注中/正在关注之一:
      • 默认 - 在启用语音聊天的体验中创建和父辈收听器 Workspace.CurrentCamera
      • - 不创建列表器。如果您想通过脚本创建列表器,此选项很有用。
      • 角色 - 创建并父辈一个收听器到本地玩家的角色。
      • 相机 - 创建并父辈收听器到 Workspace.CurrentCamera .
  2. Explorer 窗口中,导航到你想要发出音频的 3D 对象,然后:

    1. 插入一个 音频播放器 对象来创建一个音频源。
    2. 插入一个 音频发射器 对象,从 3D 对象发出位置流。
    3. 插入一个 电线 对象来连接音频播放器到音频发射器的流。
  3. 选择 音频播放器 ,然后在 属性 窗口中,

    1. 资产ID 设置为有效的音频资产ID。如果您没有自己的自定义音频,您可以在创作者商店中找到免费使用的音频资产。
    2. 启用 循环 ,如果你想要你的音频不断重复。
    3. 音量 设置为你想要播放音频的音量单位。
  4. 选择 音频发射器 ,然后在 属性 窗口中,将 距离减弱 设置为一个距离过滤曲线,该曲线决定收听者听到发射器的声音有多大,根据距离之间的距离。

    例如,以下曲线在收听者距离发射者 50 单位时将音频音量减半,然后当收听者距离发射者 70 单位时,将音量急剧减至零。

  5. 选择 电线 ,然后在 属性 窗口中,

    1. 源实例 设置为 音频播放器 以指定您想要在特定音频播放玩家内播放音频。
    2. 目标实例 设置为 音频输出器 以指定您想要从特定音频输出器播放音频。

从这里,您可以通过脚本触发方向性音频,让玩家加入体验或作为游戏事件或 UI 交互的结果播放。对于这些使用案例的代码示例参考,请参阅 添加 3D 音频 教程。

自定义音频

音频效果可以让你在音频流到达播放玩家耳朵之前非破坏性地修改或增强音频流。您可以将这些效果应用到使音频在体验中更具沉浸感上,例如使用 AudioEqualizer 对象使雨声淡化,使用 AudioCompressor 对象控制声音的最大音量,或使用 AudioReverb 在室内空间中添加更多现实的声音反射。

了解有关如何配置音效以及在自定义音频之前和之后的比较的说明,请参阅音效

触发音频

您可以通过调用 Play() 在正确连接的 AudioPlayer 对象上触发音频上下文。例如,如果你将脚本父级到音频播放玩家,你可以通过像这样的东西触发音频资产:


local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)

要触发音频的更复杂的代码示例,例如游戏反馈、用户界面互动和循环背景噪音,请参阅 添加 2D 音频添加 3D 音频 教程。