SoundService

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ไม่สามารถสร้าง
บริการ

บริการที่กำหนดเอฟเฟกต์ต่างๆ ของวิธีที่ Sounds เล่นในประสบการณ์SoundService ยังมักใช้เพื่อเก็บ SoundGroups แม้ว่าจะไม่จําเป็นสําหรับกลุ่มที่จะทํางาน

SoundService คุณสมบัติเช่น AmbientReverb , DistanceFactor , DopplerScale และ RolloffScale สามารถใช้เพื่อเปลี่ยนวิธีการที่ทั้งหมด Sounds เล่นในประสบการณ์ และฟังก์ชัน SetListener() ช่วยให้คุณสามารถตั้งตำแหน่งจากที่เสียงถูกได้ยินได้

ตัวอย่างโค้ด

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

สรุป

คุณสมบัติ

  • อ่านพร้อมๆ กัน

    ตั้งค่าสภาพแวดล้อมเสียงที่ใช้โดย SoundService

  • การรักษาความปลอดภัยของปลั๊กอิน
    อ่านพร้อมๆ กัน
  • การรักษาความปลอดภัยของปลั๊กอิน
    อ่านพร้อมๆ กัน

    กำหนดสถานที่ (ถ้ามี) ที่จะวาง AudioListener โดยค่าเริ่มต้น

  • อ่านพร้อมๆ กัน

    จํานวนสตัดที่จะถูกพิจารณาเป็นเมตรโดย SoundService เมื่อคํานวณการลดปริมาณของ Sounds พ่อแม่ไปยัง BasePart หรือ Attachment

  • อ่านพร้อมๆ กัน

    องศาที่ระดับของ Sound แตกต่างกันเนื่องจากเอฟเฟกต์ Doppler

  • อ่านพร้อมๆ กัน

    กำหนดว่าการเล่นแบบสตรีมจากไคลเอนต์จะถูกส่งไปยังเซิร์ฟเวอร์หรือไม่ Sound

  • อ่านพร้อมๆ กัน

    ตั้งค่าความเร็วที่ Sound ปริมาณลดลงอย่างรวดเร็ว

  • ไม่สามารถเขียนสคริปต์
    อ่านพร้อมๆ กัน

วิธีการ

  • ส่งคืนประเภทผู้ฟังปัจจุบัน SoundService และสิ่งที่กำหนดเป็นผู้ฟัง

  • OpenAttenuationCurveEditor(selectedCurveObjects : Instances):()
    การรักษาความปลอดภัยของปลั๊กอิน
  • OpenDirectionalCurveEditor(selectedCurveObjects : Instances):()
    การรักษาความปลอดภัยของปลั๊กอิน
  • เล่น Sound ท้องถิ่นซึ่งหมายความว่าเสียงจะได้ยินเฉพาะโดยไคลเอนต์ที่เรียกวิธีนี้ไม่ว่าจะถูกส่งไปที่ไหน

  • SetListener(listenerType : Enum.ListenerType,listener : Tuple):()

    ตั้งค่าผู้ฟังสำหรับ SoundService

คุณสมบัติ

AmbientReverb

อ่านพร้อมๆ กัน

ตัวเลือกแต่ละ Enum.ReverbType สำหรับคุณสมบัตินี้ตรงกับตัวเลือกล่วงหน้าที่มีอยู่ในเอนจินเสียง FMODตัวอย่างเช่น เมื่อ AmbientReverb ถูกตั้งค่าเป็น Enum.ReverbType.Hangar เสียงจะสะท้อนกลับต่างกันเพื่อจำลองว่าอยู่ในพื้นที่ปิดล้อมขนาดใหญ่

การเปลี่ยนแปลง AmbientReverb มีผลต่อคุณสมบัติต่อไปนี้ที่ใช้โดยเครื่องเสียงของ Roblox

  • เวลาการสลายของเสียงสะท้อน
  • เวลาความล่าช้าการสะท้อนเบื้องต้น
  • เวลาความแลคของการสะท้อนกลับล่าช้าเมื่อเทียบกับการสะท้อนกลับเริ่มแรก
  • อ้างอิงความถี่สูง
  • อัตราส่วนเวลาการสลายตัวความถี่สูงไปยังความถี่ปานกลาง
  • มูลค่าที่ควบคุมความหนาแน่นของเสียงสะท้อนในการลดลงของการสะท้อนแบบปลายเชิง
  • มูลค่าที่ควบคุมความหนาแน่นของโมดัลในการลดลงของการสะท้อนเสียงในภายหลัง
  • อ้างอิงความถี่ต่ำ
  • ระดับผลกระทบห้องสัมพันธ์ในความถี่ต่ำ
  • ระดับผลกระทบห้องสัมพันธ์ในความถี่สูง
  • ระดับการสะท้อนก่อนเวลาเมื่อเทียบกับผลกระทบของห้อง
  • ระดับเอฟเฟกต์ห้องที่ความถี่กลาง

CharacterSoundsUseNewApi

การรักษาความปลอดภัยของปลั๊กอิน
อ่านพร้อมๆ กัน

DefaultListenerLocation

การรักษาความปลอดภัยของปลั๊กอิน
อ่านพร้อมๆ กัน

กำหนดตำแหน่งที่จะวาง AudioListener โดยค่าเริ่มต้น ดู Enum.ListenerLocation สำหรับคำอธิบายโดยละเอียดของแต่ละตัวเลือก

DistanceFactor

อ่านพร้อมๆ กัน

จํานวนสตัดที่จะถูกพิจารณาเป็นเมตรโดย SoundService เมื่อคํานวณการลดปริมาณของ Sounds พ่อแม่ไปยัง BasePart หรือ Attachment

โดยค่าเริ่มต้นคุณสมบัตินี้คือ 3.33 ซึ่งหมายความว่าเมตรถูกพิจารณาเป็น 3.33 สตัดสำหรับวัตถุประสงค์ในการลดปริมาณยิ่ง DistanceFactor มากขึ้นเท่าใด เสียงจะลดลงช้าลงเท่านั้น

ขอแนะนำให้คุณเปลี่ยนค่านี้เฉพาะถ้าประสบการณ์ของคุณใช้เครื่องชั่งที่แตกต่างตัวอย่างเช่น เมื่อใช้ตัวละครที่กำหนดเองขนาดใหญ่ คุณอาจต้องการลด DistanceFactor

DopplerScale

อ่านพร้อมๆ กัน

คุณสมบัตินี้กำหนดระดับที่เอียงของ Sound เปลี่ยนแปลงเนื่องจากเอฟเฟกต์ Doppler ซึ่งเป็นปรากฏการณ์ที่ทำให้เอียงของเสียงเปลี่ยนแปลงเมื่อแหล่งและผู้สังเกตการณ์ของเสียงย้ายไปไกลหรือใกล้กันมากขึ้นมีผลเฉพาะกับ Sounds ที่เป็นพ่อของ BasePart หรือ Attachment

การเพิ่มค่านี้จะเน้นผลกระทบของเอฟเฟกต์ Doppler ในขณะที่ลดลงจะลดผลกระทบนั้นค่าเริ่มต้นของคุณสมบัตินี้คือ 1

RespectFilteringEnabled

อ่านพร้อมๆ กัน

คุณสมบัตินี้กำหนดว่าการเล่นแบบสะท้อนกลับจากไคลเอนต์ไปยังเซิร์ฟเวอร์และจากเซิร์ฟเวอร์จะถูกสําเนาหรือไม่คือเมื่อ LocalScript เรียก Play() และคุณสมบัตินี้เป็น true เสียงจะเล่นเฉพาะในไคลเอนต์ที่เกี่ยวข้องหากคุณสมบัตินี้เป็น false คลายเครื่องอื่นๆ จะได้ยินเสียงเช่นกัน

ค่าเริ่มต้นคือ true ซึ่งหมายความว่าการกรองเปิดใช้งานแล้ว

RolloffScale

อ่านพร้อมๆ กัน

ตั้งค่าความเร็วที่ Sound ปริมาณลดลงอย่างรวดเร็วยิ่ง RolloffScale สูงขึ้นเท่าใด ความดังของเสียงก็จะลดลงเร็วขึ้นเท่านั้น เมื่อระยะห่างระหว่างผู้ฟังและเสียงเพิ่มขึ้น

โปรดทราบว่าคุณสมบัตินี้ใช้กับ Sounds ที่มีคุณสมบัติ RollOffMode ถูกตั้งค่าเป็น Inverse หรือ InverseTapered เท่านั้นLinear และ LinearSquare โหมดใช้โมเดลการลดแสงที่แตกต่างซึ่งไม่ได้รับอิทธิพลจากคุณสมบัตินี้คุณสมบัตินี้ยังไม่มีผลกระทบต่อ Sounds ซึ่งไม่ได้เป็นบุตรของ BasePart หรือ Attachment

VolumetricAudio

ไม่สามารถเขียนสคริปต์
อ่านพร้อมๆ กัน

วิธีการ

GetListener

วิธีนี้จะคืนประเภทผู้ฟังปัจจุบัน SoundService และสิ่งที่กำหนดเป็นผู้ฟัง ซึ่งหมายถึงจุดที่เสียงในประสบการณ์ "ได้ยิน" โดยผู้เล่นโดยค่าเริ่มต้น ผู้ฟังจะถูกตั้งค่าเป็น Workspace.CurrentCameraผู้ฟังสามารถเปลี่ยนได้โดยใช้ SetListener()

ผลลัพธ์แรกที่ได้รับคือผู้ฟังของ Enum.ListenerType พิมพ์:


<th>คําอธิบาย</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Enum.ListenerType.กล้อง</code></td>
<td>ไม่ส่งคืนวัตถุผู้ฟังในฐานะ <code>คลาส.Workspace.CurrentCamera|CurrentCamera</code> เนื่องจากใช้เสมอ</td>
</tr>
<tr>
<td><code>Enum.ListenerType.CFrame</code></td>
<td>คืนค่า <code>Datatype.CFrame</code> ที่ใช้ใน <code>Class.SoundService:SetListener()|SetListener()</code></td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectPosition</code></td>
<td>คืนคลาส <code>Class.BasePart</code> ที่ใช้ใน <code>Class.SoundService:SetListener()|SetListener()</code></td>
</tr>
<tr>
<td><code>Enum.ListenerType.ObjectCFrame</code></td>
<td>คืนคลาส <code>Class.BasePart</code> ที่ใช้ใน <code>Class.SoundService:SetListener()|SetListener()</code></td>
</tr>
</tbody>
ประเภทผู้ฟัง

ส่งค่ากลับ

ปัจจุบัน Enum.ListenerType และสิ่งที่ผู้ฟังถูกตั้งค่าไว้ ผู้ฟังสามารถเป็น BasePart , CFrame หรือ nil ได้

OpenAttenuationCurveEditor

()
การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

selectedCurveObjects: Instances
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

OpenDirectionalCurveEditor

()
การรักษาความปลอดภัยของปลั๊กอิน

พารามิเตอร์

selectedCurveObjects: Instances
ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

PlayLocalSound

()

เล่น Sound ท้องถิ่นซึ่งหมายความว่าเสียงจะได้ยินเฉพาะโดยไคลเอนต์ที่เรียกวิธีนี้ไม่ว่าจะถูกส่งไปที่ไหนวิธีนี้มีประโยชน์มากที่สุดสำหรับการเล่น Sound ในท้องถิ่นบนไคลเอนต์ Studio ตัวอย่างเช่นใน Script สำหรับ Plugin

พารามิเตอร์

sound: Instance

The Sound ที่จะเล่น

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

SetListener

()

ตั้งค่าผู้ฟังที่ใช้โดยไคลเอนต์ ซึ่งหมายความว่าจุดที่เสียงในประสบการณ์ "ได้ยิน" โดยผู้เล่นสำหรับ Sounds ผู้ปกครองไปยัง BasePart หรือ Attachment ผู้ฟังมีอิทธิพลต่อระดับเสียงและความสมดุลซ้าย/ขวาของเสียงที่เล่น

โดยค่าเริ่มต้น ผู้ฟังจะถูกตั้งค่าเป็น Workspace.CurrentCamera แต่สามารถใช้ช่วงประเภทผู้ฟังที่แตกต่างกันได้

ผู้ฟังสามารถดึงได้โดยใช้ GetListener()

พารามิเตอร์

listenerType: Enum.ListenerType

The Enum.ListenerType ของผู้ฟัง

ค่าเริ่มต้น: ""
listener: Tuple

ขึ้นอยู่กับ Enum.ListenerType .ใช้ BasePart สำหรับ Enum.ListenerType.ObjectPosition หรือ Enum.ListenerType.ObjectCFrame , CFrame สำหรับ Enum.ListenerType.CFrame หรือ nil สำหรับ Enum.ListenerType.Camera .

ค่าเริ่มต้น: ""

ส่งค่ากลับ

()

อีเวนต์