SoundService

顯示已棄用項目

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

無法建立
服務

一個服務,決定在體驗中如何 Sounds 播放的各種方面。SoundService 也常用來儲存SoundGroups,雖然這對群組的運作不是必需的。

SoundService 屬性,例如 AmbientReverb , DistanceFactor , DopplerScaleRolloffScale 可用於更改所有 Sounds 在體驗中播放的方式,而 SetListener() 函數允許您設置聲音被聽到的位置。

範例程式碼

在 執行此樣本的代碼時,將更改 標籤的 屬性,當玩家在 標籤內時。

要添加或移除標籤和回音類型,請變更「回音標籤」表中的項目。

動態重疊系統

local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local SoundService = game:GetService("SoundService")
local localPlayer = Players.LocalPlayer
local reverbTags = {
["reverb_Cave"] = Enum.ReverbType.Cave,
}
-- 收集零件並依標籤分組
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- 檢查位置是否在零件範圍內的功能
local function positionInPart(part, position)
local extents = part.Size / 2
local offset = part.CFrame:PointToObjectSpace(position)
return offset.x < extents.x and offset.y < extents.y and offset.z < extents.z
end
local reverbType = SoundService.AmbientReverb
while true do
task.wait()
if not localPlayer then
return
end
local character = localPlayer.Character
-- 預設無回音
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- 通過所有索引的零件
for part, type in pairs(parts) do
-- 查看角色是否在其中
if positionInPart(part, position) then
-- 如果是,選擇那種回音類型
newReverbType = type
break
end
end
end
-- 如果已變更,設置回音類型
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end

概要

屬性

方法

屬性

AmbientReverb

平行讀取

此特性的每個 Enum.ReverbType 選項對應於 FMOD 音效引擎中可用的預設。例如,當 AmbientReverb 設為 Enum.ReverbType.Hangar 時,聲音會以不同方式回蕩,模擬身處大型封閉空間。

變更 AmbientReverb 會影響 Roblox 音效引擎使用的下列屬性

  • 回音衰減時間。
  • 初始反射延遲時間。
  • 與初始反射相對的延遲遲緩時間。
  • 參考高頻率。
  • 高頻到中頻衰變時間比率。
  • 控制遲期回音衰減中的回音密度的值。
  • 控制遲期重複衰減中模態密度的值。
  • 參考低頻率。
  • 低頻率下相對房間效果等級。
  • 在高頻率時的相對房間效果等級。
  • 早期反射等級與房間效果相對。
  • 中頻時的房間效果等級。

CharacterSoundsUseNewApi

外掛程式安全性
平行讀取

DefaultListenerLocation

外掛程式安全性
平行讀取

決定默認位置放置 AudioListener 。見 Enum.ListenerLocation 每個選項的詳細說明。

DistanceFactor

平行讀取

當計算音量衰減時,由 計算到 或 的父輩時,需考慮的孔數。

預設情況下,此屬性為 3.33 ,即表示一個表盤被視為 3.33 個單位,用於降低音量。愈大的 DistanceFactor ,聲音愈會逐漸消失。

建議您只有在體驗使用不同比例時才更改此屬性。例如,當使用較大的自訂角色時,您可能想要減少 DistanceFactor

DopplerScale

平行讀取

這個屬性決定了一個 Sound 的音高是否因為杜比效應而變化的程度,這是一種現象,在那裡音高的音移到源和觀察者的距離增加或減少時,音質會發生變化。只影響那些被指派給 或 的 子。

增加此值會增強道普勒效果的影響,而減少它會將其最小化。預設值為此屬性的值是 1

RespectFilteringEnabled

平行讀取

此屬性決定是否要將 Sound 播放從客戶端複製到服務伺服器,並因此從服務伺服器。換言之,當 LocalScript 呼叫 Play() 和此屬性是 true 時,聲音只會在對應的客戶端播放。如果此屬性是 false,其他客戶端也會聽到聲音。

默认值是 true , 意味著過濾已啟用。

RolloffScale

平行讀取

設置音量衰減的速度 Sound 。隨著距離從聆聽者到聲音的距離增加,音量的衰減速度會更快,因為 RolloffScale 越高。

請注意,此屬性只適用於 SoundsRollOffMode 屬性設置為 Inverse (預設值) 或 InverseTaperedLinearLinearSquare 模式使用不受此特性影響的不同減衰模型。此屬性也不會對 Sounds 造成影響,這些不屬於 BasePartAttachment 的子孫。

VolumetricAudio

無法建立指令碼
平行讀取

方法

GetListener

此方法返回 SoundService 目前的聆聽者類型和設為聆聽者的內容,即體驗中的音頻從玩家那裡 "聽到" 的點。預設情況下,收聽器設為 Workspace.CurrentCamera 。收聽器可以使用 SetListener() 來變更。

第一個返回的結果是收聽者的 Enum.ListenerType ,第二個結果取決於那種輸入:


<th>說明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.ListenerType.相機</code></td>
<td>不會返回聆聽者對象,因為 <code>類型.Workspace.CurrentCamera|CurrentCamera</code> 總是使用。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.CFrame</code></td>
<td>返回 <code>Datatype.CFrame</code> 在 <code>Class.SoundService:SetListener()|SetListener()</code> 中使用的類型。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.Object位置</code></td>
<td>返回 <code>Class.BasePart</code> 在 <code>Class.SoundService:SetListener()|SetListener()</code> 中使用的。</td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectCFrame</code></td>
<td>返回 <code>Class.BasePart</code> 在 <code>Class.SoundService:SetListener()|SetListener()</code> 中使用的。</td>
</tr>
</tbody>
收聽器類型

返回

目前的 Enum.ListenerType 和聆聽器設為了什麼。聆聽器可以是 BasePartCFramenil

OpenAttenuationCurveEditor

()
外掛程式安全性

參數

selectedCurveObjects: Instances
預設值:""

返回

()

OpenDirectionalCurveEditor

()
外掛程式安全性

參數

selectedCurveObjects: Instances
預設值:""

返回

()

PlayLocalSound

()

在本地播放 Sound,意味著聲音只會被客戶端聽到,無論它的父輩在哪裡。此方法最適合在 Studio 客戶端本地播放 Sound,例如在 Script 為一個 Plugin

參數

sound: Instance

要播放的 Sound

預設值:""

返回

()

SetListener

()

設置客戶端使用的聆聽器,即音頻在體驗中「被聽到」的點。對於 Sounds 被父輩到 BasePartAttachment ,收聽器會影響播放聲音的音量和左右平衡。

預設情況下,收聽器設為 Workspace.CurrentCamera,但可以使用一系列不同類型的收聽器。

收聽器可以使用 GetListener() 來取得。

參數

listenerType: Enum.ListenerType

聆聽器的 Enum.ListenerType

預設值:""

返回

()

活動