SoundService

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa

Usługa, która określa różne aspekty tego, jak Sounds gra w grze. SoundService jest równie często używany do przechowywania SoundGroups, choć nie jest to wymagane dla SoundGroups, aby działał.

Co może zrobić SoundService?

Właściwości SoundService, takie jak SoundService.AmbientReverb, SoundService.DistanceFactor, SoundService.DopplerScale i 2>Class.SoundService.RolloffScale2>, można używać do zmiany sposobu, w jaki wszystkie 5>Class.Sound|Sounds5> grają w gr

Funkcja SoundService:SetListener() pozwala rozwójcom ustawić położenie, w którym dźwięki słyszalne są.

SoundService:PlayLocalSound() można używać do odtwarzania dźwięku lokalnie, niezależnie od tego, gdzie jest jego przodkiem.

Rozwój, który chce dowiedzieć się więcej o tym, jak dźwięk działa w Roblox, powinien skonsultować dokumentację dostępną dla silnika dźwiękowego FMOD.

Przykłady kodu

Dynamic Reverb System

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,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
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
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end
Play Local Sound

local ServerScriptService = game:GetService("ServerScriptService")
local SoundService = game:GetService("SoundService")
-- Create custom plugin button
local toolbar = plugin:CreateToolbar("Empty Script Adder")
local newScriptButton = toolbar:CreateButton("Add Script", "Create an empty Script", "rbxassetid://1507949215")
local function playLocalSound(soundId)
local sound = Instance.new("Sound")
sound.SoundId = soundId
SoundService:PlayLocalSound(sound)
sound.Ended:Wait()
sound:Destroy()
end
local function onNewScriptButtonClicked()
-- Create new empty script
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = ServerScriptService
playLocalSound("rbxassetid://0") -- Insert audio asset ID here
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)

Podsumowanie

Właściwości

Metody

Właściwości

AmbientReverb

Odczyt równoległy

Ustawienia środowiskowe dźwięku używane przez SoundService.

Encyklopedia enum.ReverbType tego właściwości simuluje zakres różnych wpływów środowiskona dźwięk. Każda różnica opcja odpowiada na zapis dostępny w wbudowanym silniku dźwiękowym FMOD. Na przykład, gdy AmbientReverb jest ustawiony na Hangar, dźwięk będzie rezonować inaczej, aby simulować bycie w dużym zamkniętym przestrzeni.

Zmiany w efektach AmbientReverb zmieniają następujące właściwości używane przez silnik dźwiękowy Roblox.

  • Czas rozkładu rezerwacji
  • Czas początkowego opóźnienia odzwierciedlenia
  • Opóźniony czas odzwierciedlenia w stosunku do początkowego odzwierciedlenia
  • Odniesienie wysokiej częstotliwości
  • Wskaźnik czasu rozkładu wysokotonowego do niskotonowego
  • Wartość, która kontroluje gęstość echa w późnym rozkładzie rezerwacji
  • Wartość, która kontroluje gęstość mody w późnym rozkładzie rezerwacji
  • Odległość niskiej częstotliwości
  • Ustawienia efektu przestrzeni w stosunku do niskich częstotliwości
  • Relatywny poziom efektu pokoju przy wysokich częstotliwościach
  • Wczesny poziom odzwierciedlenia w stosunku do efektu pokoju
  • Poziom efektu pokoju w średnich częstotliwościach

Ci, którzy chcą dowiedzieć się więcej o ustawieniach do odzwierciedlenia środowiskowego, powinni zobaczyć dokumentację FMOD na temat tematu. Dla większości programistów jednak nazwy Enum.ReverbType są wystarczająco opisowe, aby można było użyć tego ustawienia bez zaawansowanej wiedzy.

Przykłady kodu

Dynamic Reverb System

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,
}
-- collect parts and group them by tag
local parts = {}
for reverbTag, reverbType in pairs(reverbTags) do
for _, part in pairs(CollectionService:GetTagged(reverbTag)) do
parts[part] = reverbType
end
end
-- function to check if a position is within a part's extents
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
-- default to no reverb
local newReverbType = Enum.ReverbType.NoReverb
if character and character.PrimaryPart then
local position = character.PrimaryPart.Position
-- go through all the indexed parts
for part, type in pairs(parts) do
-- see if the character is within them
if positionInPart(part, position) then
-- if so, pick that reverb type
newReverbType = type
break
end
end
end
-- set the reverb type if it has changed
if newReverbType ~= reverbType then
SoundService.AmbientReverb = newReverbType
reverbType = newReverbType
end
end

DefaultListenerLocation

Zabezpieczenia dodatku plug-in
Odczyt równoległy

DistanceFactor

Odczyt równoległy

Liczba śrub do uznania za metr przez SoundService przy obliczaniu 3D Sound zmniejszenia głośności.

Domyślnie DistanceFactor wynosi 3.33. Oznacza to, że dla celów zmniejszenia wolumenu mierzony jest metrem 3.33. Im większy DistanceFactor, tym mniej stopniowo dźwięk będzie się zmniejszał.


local SoundService = game:GetService("SoundService")
SoundService.DistanceFactor = 1 -- 1 meter = 1 stud
SoundService.DistanceFactor = 10 -- 1 meter = 10 studs

Rozwijać należy tę właściwość tylko w przypadku, gdy ich gra używa innej skali. Na przykład, gdy używają większych niestandardowych znaków, rozwijać należy Sound. W wszystkich innych przypadkach należy używać zastępująco Class.Sound ustawień.

Ci, którzy chcą dowiedzieć się więcej o tym, jak działa 3D w Roblox, powinni skonsultować się z dokumentacją FMOD.

DopplerScale

Odczyt równoległy

To właściwość określa stopień, w którym zmienia się wysokość obiektu 3D Sound ze względu na efekt Dopplera.

Efekt Doplera opisuje fenomen, w którym wysokość dźwięku zmienia się, gdy źródłem i obserwatorem dźwięku jest dalej lub bliżej. Efekt Doplera można często obserwować w rzeczywistym życiu, takim jak gdy samochód z dźwiękową syreną przejeżdża.

Zwiększanie tej wartości przesadza wpływ efektu Doplera, podczas gdy zmniejszanie go go zmniejsza. Domyślnie wartość tej właściwości jest ustawiona na 1.


local SoundService = game:GetService("SoundService")
SoundService.DopplerScale = 1 -- default
SoundService.DopplerScale = 2 -- exaggerated Doppler effect
SoundService.DopplerEffect = 0.5 -- subdued Doppler effect

Uwaga, że efekt Doppler nie ma wpływu na 2D Sounds , ( Sounds nie jest powiązany z BasePart lub 1> Class.Configuration1> )).

Rozwój programistów chcących dowiedzieć się więcej o różnych ustawieniach, jakie używa silnik dźwiękowy Roblox, powinien skonsultować się z dokumentacją FMOD.

RespectFilteringEnabled

Odczyt równoległy

Właściwość RespectFilteringEnabled określa, czy Sound odtwarzanie jest kopiowane z klienta na serwer, a więc z serwera. Innymi słowy, gdy LocalScript wzywa 1> Class.Sound:Play()1> i ta właściwość

RolloffScale

Odczyt równoległy

Określa, jak szybko zmniejsza się głośność 3D Sound lub „zwraca wyłączone.

Uwaga, ta właściwość dotyczy tylko Sounds, których Sound.RollOffMode właściwość jest ustawiona na „Odwróć” lub „OdwróćTap

Im wyższa skala Rolloffa, tym szybciej zmniejsza się głośność 3D dźwięku w miarę zwiększania się dystansu między słuchającym a dźwiękiem.

Domyślnie skala zwijania ustawiona jest na 1, co simuluje rzeczywisty świat.


local SoundService = game:GetService("SoundService")
SoundService.RolloffScale = 1 -- attenuation simulates real world
SoundService.RolloffScale = 2 -- sound attenuates twice as fast as the real world

Rozwój programistów chcących dowiedzieć się więcej o różnych ustawieniach, jakie używa silnik dźwiękowy Roblox, powinien skonsultować się z dokumentacją FMOD.

VolumetricAudio

Brak możliwości dodawania do skryptu
Odczyt równoległy

Metody

GetListener

Funkcja ta zwraca SoundService aktualny typ odbiornika i co jest ustawione jako odbiornik.

Pierwszym wynikiem zwróconym jest Enum.ListenerType słuchawcy, drugim wynikiem jest uzależniony od ListenerType:


<tbody>
<tr>
<td><code>enum.听器类型.Camera</code></td>
<td>Nie powoduje powrotu obiektu słuchawczego jako <code>Workspace/CurrentCamera</code> jest zawsze używany</td>
</tr>
<tr>
<td><code>Enum.ListenType.CFrame</code></td>
<td>Zwraca Datatype.CFrame używany w Class.SoundService:Setlistener()</td>
</tr>
<tr>
<td><code>enum.ListenType.ObjectPosition</code></td>
<td>Zwraca <code>Class.BasePart</code> używany w Class.SoundService:Setlistener()</td>
</tr>
<tr>
<td><code>Enum.ListenType.ObjectCFrame</code></td>
<td>Zwraca <code>Class.BasePart</code> używany w Class.SoundService:Setlistener()</td>
</tr>
</tbody>
Typ słuchaczaOpis

Słuchacz może być zmieniony używając SoundService:SetListener() .


local SoundService = game:GetService("SoundService")
SoundService:SetListener(Enum.ListenerType.CFrame, CFrame.new(0, 0, 0))
local listenerType, listener = SoundService:GetListener()
print(listenerType, listener)

Co to jest słuchacz?

Słuchacz określa punkt, z którego dźwięk w grze jest słyszalny przez gracza. Dla 3D Sounds (dźwięk powiązany z BasePart lub Attachment ) słuchacz wpływa na głośność i lewo/prawe równowaga dźwięku. Słuchacze nie mają wpływu na odtwarzanie dźwięków 2

Domyślnie słuchacz jest ustawiony na obecną kamerę. Można jednak użyć zasięgu różnych typów słuchawek.


Zwroty

Obecny Enum.ListenerType i co słuchacz został ustawiony na. W zależności od Enum.ListenerType słuchacz może być BasePart , a 1> Datatype.CFrame1> lub nil.

OpenAttenuationCurveEditor

void
Zabezpieczenia dodatku plug-in

Parametry

selectedCurveObjects: Instances

Zwroty

void

OpenDirectionalCurveEditor

void
Zabezpieczenia dodatku plug-in

Parametry

selectedCurveObjects: Instances

Zwroty

void

PlayLocalSound

void

Odtwarza lokalnie Sound , co oznacza, że dźwięk będzie słychać tylko przez klienta, który wzywa tę funkcję, niezależnie od tego, gdzie jest jego podrzędny. Ta funkcja jest najbardziej przydatna do odtwarzania lokalnie Sound w kliente Studio, na przykład w Script dla

Parametry

sound: Instance

The Sound to be played.


Zwroty

void

Przykłady kodu

Play Local Sound

local ServerScriptService = game:GetService("ServerScriptService")
local SoundService = game:GetService("SoundService")
-- Create custom plugin button
local toolbar = plugin:CreateToolbar("Empty Script Adder")
local newScriptButton = toolbar:CreateButton("Add Script", "Create an empty Script", "rbxassetid://1507949215")
local function playLocalSound(soundId)
local sound = Instance.new("Sound")
sound.SoundId = soundId
SoundService:PlayLocalSound(sound)
sound.Ended:Wait()
sound:Destroy()
end
local function onNewScriptButtonClicked()
-- Create new empty script
local newScript = Instance.new("Script")
newScript.Source = ""
newScript.Parent = ServerScriptService
playLocalSound("rbxassetid://0") -- Insert audio asset ID here
end
newScriptButton.Click:Connect(onNewScriptButtonClicked)

SetListener

void

Ustawia słuchawkę używany przez klienta.

Pierwszym parametrem jest Enum.ListenerType słuchawcy, drugim parametrem jest uzależniony od wpisywaćsłuchawcy.

  • Kamera ListenerType - Nie powoduje powrotu obiektu słuchacza jako Workspace.CurrentCamera zawsze jest używana
  • CFrame ListenerType - The CFrame do użycia
  • ObjektPosition ListenerType - The BasePart do użycia
  • ObjektCFrame ListenerType - Baza części do użycia

Słuchacz można odzyskać używając SoundService:GetListener() :


local SoundService = game:GetService("SoundService")
SoundService:SetListener(Enum.ListenerType.CFrame, CFrame.new(0, 0, 0))
local listenerType, listener = SoundService:GetListener()
print(listenerType, listener)

Co to jest słuchacz?

Naszym słuchaczem jest SoundService, który określa punkt, z którego dźwięk w grze jest słyszalny przez gracza. Dla 3D Sounds (dźwięki powiązane z BasePart lub Attachment ) słuchawki wpływają na głośność i równowagę lewe/prawe. Słuchawcy nie maj

Domyślnie słuchacz jest ustawiony na obecną kamerę. Można jednak użyć zasięgu różnych typów słuchawek.

Parametry

listenerType: Enum.ListenerType

Menu.ListenType 2 słuchawcy.

listener: Tuple

Zależnie od Enum.ListenerType . BasePart dla 'ObjektPosition' lub 'ObjektCFrame', CFrame dla 'CFrame', nil dla 'Kamera'.


Zwroty

void

Zdarzenia