SoundService

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile
Assistenza

Un servizio che determina varie parti di come Sounds gioca nel Gioco. SoundService viene anche spesso utilizzato per memorizzare SoundGroups anche se non è obbligatorio per SoundGroups per funzionare.

Cosa può fare SoundService?

Le proprietà SoundService come SoundService.AmbientReverb , SoundService.DistanceFactor , SoundService.DopplerScale e 1> Class.SoundService.RolloffScale1> possono essere utilizzate per modificare il modo in cui tutti i 4> Class.Sound|Sounds4> giocano

La funzione SoundService:SetListener() consente agli sviluppatori di impostare la posizione in cui vengono ascoltati i suoni.

SoundService:PlayLocalSound() può essere utilizzato per riprodurre un suono localmente indipendentemente dal fatto che si trova parented a.

Gli sviluppatori che vogliono saperne di più su come il suono funziona in Roblox dovrebbero consultare la documentazione fornita per il motore sonoro FMOD .

Campioni di codice

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)

Sommario

Proprietà

Metodi

Proprietà

AmbientReverb

Lettura Parallela

L'ambiente sonoro preset usato da SoundService .

Il Enum.ReverbType questa proprietà simula un'ampia gamma di impatti diversi sull'Ambiente. Ogni diversa opzione corrisponde a un preset disponibile nel motore sonoro FMOD. Ad esempio, quando AmbientReverb è impostato su Hangar, il suono si riverbera in modo diverso per simulare di essere in un grande Spaziochiuso.

Cambiare gli effetti di AmbientReverb cambia le seguenti proprietà utilizzate dal motore sonoro di Roblox.

  • Tempo di decadimento della risonanza
  • Tempo di ritardo iniziale della riflessione
  • Tempo di ritardo di risonanza tardiva rispetto alla riflessione iniziale
  • Riferimento ad alta frequenza
  • Rapporto tempo di decadenza ad alta frequenza/频率 media
  • Valore che controlla la densità dell'eco nella decadenza tardiva
  • Valore che controlla la densità modale nella decadenza di ritorno tardivo
  • Riferimento bassa frequenza
  • Livello di effetto relativo alla stanza a bassa frequenza
  • Livello di effetto della stanza relativo alle alte frequenze
  • Livello di riflessione precoce rispetto all'effetto della stanza
  • Livello effetto stanza a frequenze medie

Coloro che sono interessati a trovare ulteriori informazioni sui preset ambientali dovrebbero vedere la documentazione FMOD sul tema . Per la maggior parte degli sviluppatori, tuttavia, i nomi Enum.ReverbType sono sufficientemente descrittivi per essere in grado di utilizzare questa impostazione senza conoscenza avanzata.

Campioni di codice

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

Sicurezza Plugin
Lettura Parallela

DistanceFactor

Lettura Parallela

Il numero di studs per essere considerato un metro da SoundService quando si calcola la riduzione del volume 3D Sound .

Per impostazione predefinita, il DistanceFactor è 3.33. Ciò significa che, per gli scopi di riduzione del volume, un metro è considerato 3.33 studs. Più il DistanceFactor è grande, più il suono si attenua gradualmente.


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

Gli sviluppatori sono consigliati di modificare questa proprietà solo se il loro gioco usa un'altra Ridimensionare. Ad esempio, quando si utilizzano personaggi personalizzati più grandi, gli sviluppatori potrebbero voler ridurre il DistanceFactor. In tutti gli altri casi, Sound impostazioni come Sound.RollOffMode dovrebbero essere utilizzate invece.

Coloro che vogliono saperne di più su come il suono 3D in Roblox funziona, dovrebbero consultare la documentazione FMOD.

DopplerScale

Lettura Parallela

Questa proprietà determina il grado in cui la variazione di pitch di un oggetto 3D Sound varia a causa dell'effetto Doppler.

L'effetto Doppler descrive un fenomeno in cui il tono di un suono cambia mentre la fonte e l'osservatore del suono si allontanano o si avvicinano l'un l'altro. L'effetto Doppler può essere spesso visto nella vita reale, come quando un'auto con una sirena passa.

L'aumento di questo valore esagera l'impatto dell'effetto Doppler, mentre la sua diminuzione lo minimizza. Per impostazione predefinita, il valore di questa proprietà è 1.


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

Nota che l'effetto Doppler non ha alcun impatto su 2D Sounds , ( Sounds non è parented a BasePart o 1> Class.Animation1> ).

Gli sviluppatori che vogliono saperne di più sulle diverse impostazioni utilizzate dal motore sonoro di Roblox dovrebbero consultare la documentazione FMOD .

RespectFilteringEnabled

Lettura Parallela

La proprietà RespectFilteringEnabled determinare se il riproduzione di Sound è replicato dal client al Server, e quindi dal Server. In altre parole, quando un LocalScript chiama 1> Class.Sound:Play()1> e questa proprietà è 4> vera 4> , il suono si ri

RolloffScale

Lettura Parallela

Imposta la velocità con cui si attenua il volume 3D Sound o si 'rotola Off'.

Nota, questa proprietà si applica solo a Sounds il cui Sound.RollOffMode proprietà è impostata su 'Inverse' o 'InverseTapered'. 'Linear' e 'LinearS

Più il valore di RolloffScale è alto, più velocemente il volume di un suono 3D si attenua man mano che la distanza tra il lettore e il suono aumenta.

Per impostazione predefinita, lo scalo di avvio è impostato su 1, che simula il Mondoreale.


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

Gli sviluppatori che vogliono saperne di più sulle diverse impostazioni utilizzate dal motore sonoro di Roblox dovrebbero consultare la documentazione FMOD .

VolumetricAudio

Non programmabile
Lettura Parallela

Metodi

GetListener

Questa funzione restituisce il SoundService tipo di ascoltatore attuale e ciò che è impostato come ascoltatore.

Il primo risultato restituito è il Enum.ListenerType del lettore, il secondo risultato dipende dal ListenerType:


<tbody>
<tr>
<td><code>Enum.ListenType.Camera</code></td>
<td>Non restituisce un oggetto ascoltatore come <code>Workspace/CurrentCamera</code> viene sempre utilizzato</td>
</tr>
<tr>
<td><code>Enum.ListenType.CFrame</code></td>
<td>Restituisce il <code>Datatype.CFrame</code> utilizzato in <code>Class.SoundService:SetListener()</code></td>
</tr>
<tr>
<td><code>Enum.ListenType.ObjectPosition</code></td>
<td>Restituisce il <code>Class.BasePart</code> utilizzato in <code>Class.SoundService:Setlistener()</code></td>
</tr>
<tr>
<td><code>Enum.ListenType.ObjectCFrame</code></td>
<td>Restituisce il <code>Class.BasePart</code> utilizzato in <code>Class.SoundService:Setlistener()</code></td>
</tr>
</tbody>
Tipo di ascoltatoreDescrizione

Il ricevitore può essere cambiato usando 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)

Cos'è un ascoltatore?

Il ricevitore determina il punto in cui l'audio nel gioco viene 'ascoltato' dal Giocatore. Per 3D Sounds (Sounds parented to a BasePart o Attachment ) i ricevitori influenzano il volume e l'equilibrio sinistra/destra di un suono di riproduzione. I ricevitori non hanno alcun'influenza sul playback dei suoni 2D poiché non hanno posizione di

Per impostazione predefinita, il lettore è impostato sulla Camera attuale. Tuttavia, è possibile utilizzare una gamma di diversi tipi di ascoltatori.


Restituzioni

Il corrente Enum.ListenerType e cosa l'ascoltatore è stato impostato su. Dipendendo dal Enum.ListenerType l'ascoltatore potrebbe essere un Class.BasePart , un 1> Datatype.CFrame o null.

OpenAttenuationCurveEditor

void
Sicurezza Plugin

Parametri

selectedCurveObjects: Instances

Restituzioni

void

OpenDirectionalCurveEditor

void
Sicurezza Plugin

Parametri

selectedCurveObjects: Instances

Restituzioni

void

PlayLocalSound

void

Riproduce un Sound localmente, il che significa che il suono sarà ascoltato solo dal client che chiama questa funzione, indipendentemente dal fatto che sia parented a . Questa funzione è più utile per giocare un Sound localmente nel client Studio, per esempio in un Script per un 2>Class.Plugin2> .

Parametri

sound: Instance

Il Sound che si vuole ascoltare.


Restituzioni

void

Campioni di codice

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

Imposta l'ascoltatore utilizzato dal client.

Il primo parametro è il Enum.ListenerType del lettore, il secondo parametro dipende dal inserisci / scrividi lettore.

  • Camera ListenerType - Non restituisce un oggetto lettore come Workspace.CurrentCamera è sempre usato
  • CFrame ListenerType - Il CFrame da utilizzare
  • ObjectPosition ListenerType - The BasePart to be used
  • ObjectCFrame ListenerType - The BasePart da utilizzare

Il lettore può essere recuperato utilizzando 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)

Cos'è un ascoltatore?

Il SoundService ascoltatore determinare il punto in cui l'audio nel gioco viene 'sentito' dal Giocatore. Per i suoni Sounds (suoni legati a una BasePart o Attachment ) l'ascoltatore influenza il volume e l'equilibrio sinistra/destra di un suono di riproduzione. Gli ascoltatori non hanno alcun influenza sul

Per impostazione predefinita, il lettore è impostato sulla Camera attuale. Tuttavia, è possibile utilizzare una gamma di diversi tipi di ascoltatori.

Parametri

listenerType: Enum.ListenerType

Il Enum.ListenerType del lettore.

listener: Tuple

Dipendente dal Enum.ListenerType . BasePart per 'ObjectPosition' o 'ObjectCFrame', CFrame per 'CFrame', null per 'Camera'.


Restituzioni

void

Eventi