音訊對象

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

Roblox 的模組化音頻對象讓您能夠在體驗中動態控制聲音和語音聊天。幾乎所有的音頻對象都對應於現實世界的音頻裝置,它們都會一起功能來捕捉和播放音頻,就像它們的物理對應一樣。

例如,每個音頻對象理論上屬於以下類別:

  • 產生音頻流的對象,例如音頻播放器。
  • 對象, 消耗 音頻流,例如音頻發射器。
  • 修改音頻流的對象,例如音頻效果。
  • 從一個音頻對象傳送到另一個音頻對象的物件,例如線纜。

閱讀本指南並學習所有這些音頻對象如何一起工作以發出聲音時,您將學習如何準確地從體驗中捕捉和傳送音樂、音效和人類聲音到玩家,並相反。

播放音訊

要在體驗中播放音訊,了解每個可用的音訊對物件的角色很重要:

  • 一個 AudioPlayer 載入並播放 音頻文件 使用設定的音頻資產ID。
  • 一個 AudioEmitter 是一個 虛擬喇叭 ,會將音頻發射到 3D 環境。
  • 一個 AudioListener 是一個 虛擬麥克風 ,可以從 3D 環境中拾取音訊。
  • 一個 AudioDeviceOutput 是現實世界內的 物理硬件裝置 ,例如揚聲器或耳機。
  • 一個 AudioDeviceInput 是真實世界內的 物理麥克風
  • A 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. 導航器 窗口中,導航到你想要播放音訊的 3D 物件,然後:

    1. 插入 音樂播放器 對象來創建音訊來原始碼。
    2. 插入 音頻發射器 對象來從 3D 對物件發出位置流。
    3. 插入 導線 對象來連接音頻播放器到音頻發射器的流。
  3. 選擇 音樂播放器 , 然後在 屬性窗口 中,

    1. 資產ID 設為有效的音訊資產ID。如果您沒有自己的特定音訊,您可以在創作者商店中找到免費使用的音訊資產。
    2. 啟用 循環 ,如果你想要你的音頻不斷重複。
    3. 音量 設為播放音訊的幅度單位。
  4. 選擇 音頻輸出器 ,然後在 屬性 窗口中,將 距離減輕 設置為一個音量與距離曲線,決定聆聽者聽到發射器的聲音有多大,根據他們之間的距離。

    例如,以下曲線在聆聽者距離發射者 50 個單位時將音訊頻音量降低一半,然後當聆聽者距離發射者 70 個單位時,將音頻音量降低到零。

  5. 選擇 電纜 ,然後在 屬性 視窗中,

    1. 來源實例 設置為 音訊播放器 以指定您想要在此特定音訊播放玩家內播放音訊。
    2. 目標實例 設為 音訊輸出器 以指定您想要從此特定音訊輸出器播放音訊。

從這裡,您可以使用腳本觸發方向性音頻,要么播放為玩家加入體驗或作為遊戲事件或使用者介面互動的結果。對於這些使用案例的代碼樣本參考,請參閱 新增 3D 音訊 教學。

自訂音訊

音響效果可讓您在音訊流到達播放玩家耳朵之前,非破壞性地修改或增強音訊流。您可以將這些效果應用到使音頻在體驗中更具沉浸感上,例如使用 AudioEqualizer 對象將雨聲降低音量,使用 AudioCompressor 對象控制聲音的最大音量,或使用 AudioReverb 在室內空間添加更多現實的聲音反射。

有關如何配置音效的指示以及在自定义音訊效之前和之後的對比,請參閱音效

觸發音訊

您可以從腳本中呼叫 Play() 在正確連接的 AudioPlayer 對象上,來啟動音訊上下文。例如,如果你將腳本傳給音訊播放玩家,你可以透過像這樣的東西來觸發音訊資產:


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

要啟動音訊的更複雜的代碼樣本,例如遊戲反回饋、使用者介面互動和循環背景噪音,請參閱 添加 2D 音頻添加 3D 音頻 教學。