SoundService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service

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

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)

Résumé

Propriétés

Méthodes

Propriétés

AmbientReverb

Lecture parallèle

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

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

Sécurité des plugins
Lecture parallèle

DistanceFactor

Lecture parallèle

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 stud
SoundService.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

Lecture parallèle

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 -- default
SoundService.DopplerScale = 2 -- exaggerated Doppler effect
SoundService.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

Lecture parallèle

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

Lecture parallèle

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 world
SoundService.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

Non scriptable
Lecture parallèle

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'écouteurDescription

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

void
Sécurité des plugins

Paramètres

selectedCurveObjects: Instances

Retours

void

OpenDirectionalCurveEditor

void
Sécurité des plugins

Paramètres

selectedCurveObjects: Instances

Retours

void

PlayLocalSound

void

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

sound: Instance

Le Sound à jouer.


Retours

void

Échantillons de code

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

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

listenerType: Enum.ListenerType

Le Enum.ListenerType du lecteur.

listener: Tuple

En fonction de la Enum.ListenerType . BasePart pour 'ObjectPosition' ou 'ObjectCFrame', zéro pour 'CFrame', zéro pour 'Camera'.


Retours

void

Évènements