SoundService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet

Deneyimde nasıl Sounds çeşitli yönleri belirleyen bir hizmet.SoundService çoğunlukla da SoundGroups saklanmak için kullanılır, ancak grupların çalışması için zorunlu değildir.

SoundService özellikleri, AmbientReverb , DistanceFactor , DopplerScale ve RolloffScale gibi özellikler, deneyimde tüm Sounds 'in nasıl oynayacağını değiştirmek için kullanılabilir ve SetListener() fonksiyonu, seslerin duyulduğu yerden konum ayarlamanıza izin verir.

Kod Örnekleri

The code in this sample, when ran from a LocalScript, will change the SoundService.AmbientReverb property of SoundService when the player is inside a BasePart tagged using CollectionService.

To add or remove tags and reverb types, change the entries in the 'reverbTags' table.

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

Özet

Özellikler

Yöntemler

Özellikler

AmbientReverb

Paralel oku

Bu özellik için her Enum.ReverbType seçenek FMOD ses motorunda mevcut bir ön ayara karşılık gelir.Örneğin, olarak ayarlanırsa, ses büyük bir kapalı alanda bulunuyor gibi görünmek için farklı yankılanacaktır.

Değiştirilen AmbientReverb özellikleri, Roblox'un ses motoru tarafından kullanılan aşağıdaki özellikleri etkiler

  • Yankı çürüme süresi.
  • Başlangıç refleksiyon gecikme süresi.
  • Başlangıç ​​yansımasına göre geç yankılanma gecikme süresi.
  • Referans yüksek frekans.
  • Yüksek frekans ile orta frekans çürüme süresi oranı.
  • Gecikmiş yankı çürümesinde yankı yoğunluğunu kontrol eden değer.
  • Geçici yankı çöküşündeki mod yoğunluğunu kontrol eden değer.
  • Düşük frekans referansı.
  • Düşük frekanslarda nispi oda etkisi seviyesi.
  • Yüksek frekanslarda nispi oda etkisi seviyesi.
  • Oda etkisine göre erken yansıma seviyesi.
  • Orta frekanslardaki oda etkisi seviyesi.

CharacterSoundsUseNewApi

Eklenti Güvenliği
Paralel oku

DefaultListenerLocation

Eklenti Güvenliği
Paralel oku

Varsayılan olarak bir AudioListener yerleştirilecek yeri belirler. Her seçeneğin ayrıntılı açıklamaları için Enum.ListenerLocation bakın.

DistanceFactor

Paralel oku

Hacim azaltmasını hesaplarken SoundService bir metre olarak düşünülecek çivilerin sayısı Sounds bir ebeveynin BasePart veya Attachment 'e verdiği hacim azaltması.

Varsayılan olarak, bu özellik 3.33 , yani bir metre, hacim azaltma amaçları için 3.33 damga olarak kabul edilir.Daha büyük olan DistanceFactor , daha fazla sessiz ses azalacaktır.

Deneyiminiz farklı bir ölçek kullandığında bu özelliği yalnızca değiştirmeniz önerilir.Örneğin, daha büyük özel karakterler kullanırken, DistanceFactor azaltmak isteyebilirsiniz.

DopplerScale

Paralel oku

Bu özellik, Sound ın yüksekliğinin Doppler etkisi nedeniyle değişeceği dereceyi belirler, bir sesin yüksekliğinin kaynağı ve sesin gözlemcisi olarak hareket eden sesin daha da uzaklaşmasını veya daha yakınlaşmasını sağlayan bir fenomen.Sadece Sounds bir BasePart veya Attachment 'e ebeveyn olanlara etki eder.

Bu değeri artırmak, Doppler etkisinin etkisini artırırken, azaltmak onu azaltır.Varsayılan olarak, bu özelliğin değeri 1 dir.

RespectFilteringEnabled

Paralel oku

Bu özellik, Sound oynatmanın istemciden sunucuya ve dolayısıyla sunucudan yinelenip yinelenmediğini belirler.Diğer bir deyişle, bir LocalScript çağrısı yaptığında ve bu özellik Play() ve bu özellik true olduğunda, ses yalnızca ilgili istemci üzerinde çalacaktır.Bu özellik false ise, diğer müşteriler de sesi duyacaktır.

Varsayılan değer true , yani filtreleme etkinleştirildi.

RolloffScale

Paralel oku

Sound hacminin ne kadar hızlı azaldığını ayarlar.RolloffScale daha yüksek olursa, sesin ses düzeyi, dinleyici ve ses arasındaki mesafe arttıkça daha hızlı azalır.

Bu özellik sadece Sounds özelliklerine uygulanır, ki bunların RollOffMode özellikleri Inverse (Varsayılan) veya InverseTapered olarak ayarlanmıştır.Linear ve LinearSquare modları, bu özellik tarafından etkilenmeyen farklı bir azaltma modeli kullanır.Bu özellik ayrıca bir Sounds veya Attachment ebeveyn olmayan BasePart veya üzerinde hiçbir etkisi yoktur.

VolumetricAudio

Betiklenemez
Paralel oku

Yöntemler

GetListener

Bu yöntem, mevcut dinleyici türünü SoundService ve dinleyici olarak ayarlanan şeyi geri döndürür, yani deneyimdeki sesin oyuncu tarafından "duyulduğu" nokta.Varsayılan olarak, dinleyici Workspace.CurrentCamera olarak ayarlanır.Dinleyici SetListener() kullanılarak değiştirilebilir.

İlk sonuç dinleyicinin Enum.ListenerType ve ikinci sonuç o yazbağımlıdır:


<th>Açıklama</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.ListenerType.Camera'ya</code></td>
<td>Bir dinleyici nesnesini <code>Sınıf.Workspace.CurrentCamera|CurrentCamera</code> olarak geri dönmez, çünkü daima kullanılır.</td>
</tr>
<tr>
<td><code>Enum.ListenerType.CFrame</code></td>
<td>Sınıf.SesHizmeti:Dinleyici()|Dinleyici() içinde kullanılan Datatype.CFrame döndürür.</td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectPositioni</code></td>
<td><code>Sınıf.BasePart</code><code>Class.SoundService:SetListener()|SetListener()</code> 'de kullanılan sınıfı geri döndürür.</td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectCFrame</code></td>
<td><code>Sınıf.BasePart</code><code>Class.SoundService:SetListener()|SetListener()</code> 'de kullanılan sınıfı geri döndürür.</td>
</tr>
</tbody>
Dinleyici Türü

Dönüşler

Mevcut Enum.ListenerType ve dinleyicinin ayarlandığı şey. Dinleyici bir BasePart , bir CFrame veya nil olabilir.

OpenAttenuationCurveEditor

()
Eklenti Güvenliği

Parametreler

selectedCurveObjects: Instances
Varsayılan değer: ""

Dönüşler

()

OpenDirectionalCurveEditor

()
Eklenti Güvenliği

Parametreler

selectedCurveObjects: Instances
Varsayılan değer: ""

Dönüşler

()

PlayLocalSound

()

Yerel olarak Sound oynar, yani ses yalnızca bu yöntemi çağıran istemci tarafından duyulur, nerede ebeveyn alındığına bakılmaksızın.Bu yöntem, örneğin Studio istemcisinde yerel olarak bir oynamak için en yararlıdır, örneğin bir için.

Parametreler

sound: Instance

Oynanacak Sound .

Varsayılan değer: ""

Dönüşler

()

SetListener

()

Müşteri tarafından kullanılan dinleyiciyi ayarlar, yani deneyimdeki sesin oyuncuya "duyulduğu" noktayı.Bir Sounds için BasePart veya Attachment için dinleyici, oynatma sesinin hacmini ve sol/sağ dengesini etkiler.

Varsayılan olarak, dinleyici Workspace.CurrentCamera olarak ayarlanır, ancak farklı türdeki dinleyicilerin bir menzili kullanılabilir.

Dinleyici GetListener() kullanarak alınabilir.

Parametreler

listenerType: Enum.ListenerType

Dinleyicinin Enum.ListenerType 'si.

Varsayılan değer: ""
listener: Tuple

Dönüşler

()

Etkinlikler