一個服務,決定在體驗中如何 Sounds 播放的各種方面。SoundService 也常用來儲存SoundGroups,雖然這對群組的運作不是必需的。
SoundService 屬性,例如 AmbientReverb , DistanceFactor , DopplerScale 和 RolloffScale 可用於更改所有 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
概要
屬性
由 SoundService 使用的環境音效預設值。
決定在哪裡 (如果任何地方) 預設放置 AudioListener 。
當計算音量衰減時,由 計算到 或 的父輩時,需考慮的孔數。
由於戴勒效應, Sound 的音高變化的程度。
設置從客戶端播放的 Sound 是否會複製到服務伺服器。
設置音量衰減的速度 Sound 。
方法
返回目前的 SoundService 收聽者類型和設為收聽者的內容。
在本地播放 Sound,意味著聲音只會被客戶端聽到,無論它的父輩在哪裡。
設置聆聽器為 SoundService。
屬性
AmbientReverb
此特性的每個 Enum.ReverbType 選項對應於 FMOD 音效引擎中可用的預設。例如,當 AmbientReverb 設為 Enum.ReverbType.Hangar 時,聲音會以不同方式回蕩,模擬身處大型封閉空間。
變更 AmbientReverb 會影響 Roblox 音效引擎使用的下列屬性
- 回音衰減時間。
- 初始反射延遲時間。
- 與初始反射相對的延遲遲緩時間。
- 參考高頻率。
- 高頻到中頻衰變時間比率。
- 控制遲期回音衰減中的回音密度的值。
- 控制遲期重複衰減中模態密度的值。
- 參考低頻率。
- 低頻率下相對房間效果等級。
- 在高頻率時的相對房間效果等級。
- 早期反射等級與房間效果相對。
- 中頻時的房間效果等級。
CharacterSoundsUseNewApi
DistanceFactor
當計算音量衰減時,由 計算到 或 的父輩時,需考慮的孔數。
預設情況下,此屬性為 3.33 ,即表示一個表盤被視為 3.33 個單位,用於降低音量。愈大的 DistanceFactor ,聲音愈會逐漸消失。
建議您只有在體驗使用不同比例時才更改此屬性。例如,當使用較大的自訂角色時,您可能想要減少 DistanceFactor 。
DopplerScale
這個屬性決定了一個 Sound 的音高是否因為杜比效應而變化的程度,這是一種現象,在那裡音高的音移到源和觀察者的距離增加或減少時,音質會發生變化。只影響那些被指派給 或 的 子。
增加此值會增強道普勒效果的影響,而減少它會將其最小化。預設值為此屬性的值是 1 。
RespectFilteringEnabled
此屬性決定是否要將 Sound 播放從客戶端複製到服務伺服器,並因此從服務伺服器。換言之,當 LocalScript 呼叫 Play() 和此屬性是 true 時,聲音只會在對應的客戶端播放。如果此屬性是 false,其他客戶端也會聽到聲音。
默认值是 true , 意味著過濾已啟用。
RolloffScale
設置音量衰減的速度 Sound 。隨著距離從聆聽者到聲音的距離增加,音量的衰減速度會更快,因為 RolloffScale 越高。
請注意,此屬性只適用於 Sounds 其 RollOffMode 屬性設置為 Inverse (預設值) 或 InverseTapered 。Linear 和 LinearSquare 模式使用不受此特性影響的不同減衰模型。此屬性也不會對 Sounds 造成影響,這些不屬於 BasePart 或 Attachment 的子孫。
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 和聆聽器設為了什麼。聆聽器可以是 BasePart 、 CFrame 或 nil 。
OpenAttenuationCurveEditor
參數
返回
OpenDirectionalCurveEditor
參數
返回
PlayLocalSound
在本地播放 Sound,意味著聲音只會被客戶端聽到,無論它的父輩在哪裡。此方法最適合在 Studio 客戶端本地播放 Sound,例如在 Script 為一個 Plugin 。
參數
返回
SetListener
設置客戶端使用的聆聽器,即音頻在體驗中「被聽到」的點。對於 Sounds 被父輩到 BasePart 或 Attachment ,收聽器會影響播放聲音的音量和左右平衡。
預設情況下,收聽器設為 Workspace.CurrentCamera,但可以使用一系列不同類型的收聽器。
收聽器可以使用 GetListener() 來取得。
參數
聆聽器的 Enum.ListenerType。
取決於 Enum.ListenerType 。使用 BasePart 對於 Enum.ListenerType.ObjectPosition 或 Enum.ListenerType.ObjectCFrame ,使用 CFrame 對於 Enum.ListenerType.CFrame 或 nil 對於 Enum.ListenerType.Camera 。