SoundService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Un service qui détermine divers aspects de la façon dont Sounds joue dans le jeu. SoundService est également souvent utilisé pour stocker SoundGroups bien que ce ne soit pas obligatoire pour SoundGroups de fonctionner.
Que peut faire SoundService ?
Les propriétés SoundService telles que SoundService.AmbientReverb, SoundService.DistanceFactor, SoundService.DopplerScale et 1> Class.SoundService.RolloffScale1> peuvent être utilisées pour modifier la façon dont tous les 4> Class.Sound|Sons4> jouent dans le jeu
La fonction SoundService:SetListener() permet aux développeurs de définir l'endroit où les sons sont entendus.
SoundService:PlayLocalSound() peut être utilisé pour jouer un son localement, peu importe l'endroit où il est associé.
Les développeurs qui souhaitent en savoir plus sur le fonctionnement du son dans Roblox devraient consulter la documentation fournie pour le moteur de son FMOD.
Échantillons de code
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
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)
Résumé
Propriétés
L'environnement sonore ambiant utilisé par SoundService.
Le nombre de studs à prendre en compte par SoundService lors du calcul de l'atténuation de volume 3D Sound .
Cette propriété détermine le degré dans lequel la hauteur d'un objet Sound 3D varie en fonction de l'effet Doppler.
Définit si la lecture de Sound depuis un client se répliquera sur le serveur.
Définit la vitesse à laquelle le volume 3D Sound se réduit ou se « déroule ».
Méthodes
GetListener renvoie le type de l'écouteur actuel SoundService et ce qui est défini comme écouteur.
Joue un Sound localement, ce qui signifie que le son ne sera entendu que par le client qui appelle cette fonction, peu importe l'endroit où il est parenté.
Définit l'écouteur pour le SoundService .
Propriétés
AmbientReverb
L'environnement sonore ambiant utilisé par SoundService.
La Enum.ReverbType cette propriété simule une gamme d'impacts différents sur le son de l'environnement. Chaque option différente correspond à un préset disponible dans le moteur sonore FMOD. Par exemple, lorsque AmbientReverb est réglé sur Hangar, le son résonnera différemment pour simuler être dans un grand espace fermé.
Changer les effets AmbientReverb modifie les propriétés suivantes utilisées par le moteur sonore de Roblox.
- Temps de décadence de réverbe
- Temps de retardement de réflexion initial
- Délai de réverbération tardif par rapport à la réflexion initiale
- Référence haute fréquence
- Hautement radioactif pour une durée de vie de 100 000 heures
- Valeur qui contrôle la densité d'écho dans la dernière décadence de réverbe
- Valeur qui contrôle la densité modale dans la décadence de résonance tardive
- Référez-vous à la fréquence basse
- Niveau d'effet de chambre relatif à faibles fréquences
- Niveau d'effet de chambre relatif à haute fréquence
- Niveau de réflexion prématuré par rapport à l'effet de la chambre
- Niveau d'effet de chambre à mid-frequence
Ceux qui sont intéressés par le fait de trouver plus d'informations sur les préset de réverbération ambiante devraient voir la FMOD documentation sur le sujet. Pour la plupart des développeurs, les noms Enum.ReverbType sont suffisamment décritifs pour pouvoir utiliser ce paramètre sans connaissances avancées.
Échantillons de code
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
DistanceFactor
Le nombre de studs à prendre en compte par SoundService lors du calcul de l'atténuation de volume 3D Sound .
Par défaut, le DistanceFactor est 3.33. Cela signifie que, pour les fins de l'atténuation du volume, un mètre est considéré comme 3.33 studs. Plus le DistanceFactor est élevé, plus le son s'atténue progressivement.
local SoundService = game:GetService("SoundService")SoundService.DistanceFactor = 1 -- 1 meter = 1 studSoundService.DistanceFactor = 10 -- 1 meter = 10 studs
Les développeurs sont conseillés de ne modifier cette propriété que si leur jeu utilise une autre redimensionner. Par exemple, lorsque vous utilisez des personnages personnalisés plus grands, les développeurs peuvent vouloir réduire le facteur de distance. Dans tous les autres cas, Sound paramètres comme Sound.RollOffMode doivent être utilisés à la place.
Ceux qui voudraient en savoir plus sur le fonctionnement du son 3D dans Roblox devraient consulter la documentation FMOD.
DopplerScale
Cette propriété détermine le degré dans lequel la hauteur d'un objet Sound 3D varie en fonction de l'effet Doppler.
L'effet Doppler décrit un phénomène par lequel la hauteur d'un son change en fonction de la source et de l'observateur du son se déplaçant plus loin ou plus près. L'effet Doppler peut souvent être vu dans la vie réelle, comme lorsqu'une voiture avec une sirène passe.
Augmenter cette valeur exagère l'impact de l'effet Doppler, tandis que sa réduction le minimise. Par défaut, la valeur de cette propriété est 1.
local SoundService = game:GetService("SoundService")SoundService.DopplerScale = 1 -- defaultSoundService.DopplerScale = 2 -- exaggerated Doppler effectSoundService.DopplerEffect = 0.5 -- subdued Doppler effect
Notez que l'effet Doppler n'a aucun impact sur 2D Sounds , ( Sounds n'est pas parenté à un BasePart ou 1> Class.Selection1> )).
Les développeurs souhaitant en savoir plus sur les différents paramètres que l'ingénieur du son de Roblox utilise devraient consulter la FMOD documentation.
RespectFilteringEnabled
La propriété RespectFilteringEnabled détermine si la restitution de Sound est répliquée du client au serveur, et donc du serveur. En d'autres termes, lorsqu'un LocalScript appelle 1> Class.Sound:Play()1> et que cette propriété est 4>vraie4>,
RolloffScale
Définit la vitesse à laquelle le volume 3D Sound se réduit ou se « déroule ».
Remarquez que cette propriété ne s'applique qu'à Sounds dont la propriété Sound.RollOffMode est réglée sur « Inverse » ou « InverseTapered ». « Liné
Plus la valeur de RolloffScale est élevée, plus le volume d'un son 3D diminue rapidement à mesure que la distance entre l'écouteur et le son augmente.
Par défaut, l'échelle de déroulement est réglée sur 1, ce qui simule le monde réel.
local SoundService = game:GetService("SoundService")SoundService.RolloffScale = 1 -- attenuation simulates real worldSoundService.RolloffScale = 2 -- sound attenuates twice as fast as the real world
Les développeurs souhaitant en savoir plus sur les différents paramètres que l'ingénieur du son de Roblox utilise devraient consulter la FMOD documentation.
VolumetricAudio
Méthodes
GetListener
Cette fonction renvoie le SoundService type de l'écouteur actuel et ce qui est défini comme écouteur.
Le premier résultat renvoyé est le Enum.ListenerType du lecteur, le deuxième résultat dépend du type d'écouteur :
<tbody><tr><td><code>Type.Camera</code></td><td>Ne renvoie pas d'objet d'écoute en tant que <code>Workspace/CurrentCamera</code> est toujours utilisé</td></tr><tr><td><code>Type.听者框架</code></td><td>Retourne le <code>Datatype.CFrame</code> utilisé dans <code>Class.SoundService:Setlistener()</code></td></tr><tr><td><code>enum.ListenType.ObjectPosition</code></td><td>Retourne la <code>Class.BasePart</code> utilisée dans <code>Class.SoundService:Setlistener()</code></td></tr><tr><td><code>Type d'objet Framework de type d'écoute</code></td><td>Retourne la <code>Class.BasePart</code> utilisée dans <code>Class.SoundService:Setlistener()</code></td></tr></tbody>
Type d'écouteur | Description |
---|
L'écouteur peut être modifié en utilisant 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)
Qu'est-ce qu'un écouteur ?
Le lecteur détermine le point à partir duquel l'audio dans le jeu est « entendu » par le joueur. Pour 3D Sounds (Sons parentés à un BasePart ou Attachment ) le lecteur influence le volume et l'équilibre gauche/droite d'un son de lecture. Les écouteurs n'ont aucune influence sur le playback des sons 2D car ils n'ont pas de position d'émission.
Par défaut, le lecteur est réglé sur la Caméra actuelle. Cependant, une gamme de différents types de lecteurs peut être utilisée.
Retours
Le Enum.ListenerType actuel et ce que le слушатель a été configuré pour. Dependant de Enum.ListenerType le слушатель pourrait être un BasePart , un 1> Datatype.CFrame1> ou zéro.
OpenAttenuationCurveEditor
Paramètres
Retours
OpenDirectionalCurveEditor
Paramètres
Retours
PlayLocalSound
Joue un Sound localement, ce qui signifie que le son ne sera entendu que par le client qui appelle cette fonction, peu importe où il se trouve. Cette fonction est la plus utile pour jouer un Sound localement dans le client Studio, par exemple dans un Script pour un 2>Class.Plugin2> .
Paramètres
Retours
Échantillons de code
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
Définit l'écouteur utilisé par le client.
Le premier paramètre est le Enum.ListenerType du lecteur, le deuxième paramètre dépend du taperde lecteur.
- Camera ListenerType - Ne renvoie pas d'objet d'écouteur comme Workspace.CurrentCamera est toujours utilisé
- CFrame ListenerType - Le CFrame à utiliser
- ObjectPosition ListenerType - Le BasePart à utiliser
- Type d'écouteur objet - La partie de base à utiliser
Le lecteur peut être récupéré en utilisant 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)
Qu'est-ce qu'un écouteur ?
Le SoundService écouteur détermine le point à partir duquel l'audio dans le jeu est « entendu » par le joueur. Pour les 3D Sounds (sons parentés à un BasePart ou Attachment), l'écouteur influence le volume et l'équilibre gauche/droite d'un son de jeu. Les écouteurs n'ont aucune influence
Par défaut, le lecteur est réglé sur la Caméra actuelle. Cependant, une gamme de différents types de lecteurs peut être utilisée.
Paramètres
Le Enum.ListenerType du lecteur.
En fonction de la Enum.ListenerType . BasePart pour 'ObjectPosition' ou 'ObjectCFrame', zéro pour 'CFrame', zéro pour 'Camera'.