SoundService

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
서비스

게임에서 Sounds 재생 방식을 결정하는 서비스입니다. SoundService 는 일반적으로 게임에서 작동하도록 하는 데 사용됩니다 SoundGroups 하지만 이것은 SoundGroups 작동을 위한 필수 사항은 아닙니다.

SoundService는 무엇을 할 수 있습니까?

Class.SoundService.AmbientReverb, SoundService.DistanceFactor, SoundService.DopplerScale, 1>Class.SoundService.RolloffScale1> 및 4>Class.SoundService.RolloffScale4> 등의 음향 서비스 속성을 사용하여 게임에서 모든 7>Class

Class.SoundService:SetListener() 함수는 개발자가 음향을 감지할 위치를 설정할 수 있습니다.

SoundService:PlayLocalSound() 은 어디에 부모로 지정되든 사운드를 로컬에서 재생할 수 있습니다.

Roblox의 음향 작동 방식에 대해 자세히 알아보려는 개발자는 음향 엔진에 대한 문서를 참조하십시오.(FMOD sound engine).

코드 샘플

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)

요약

속성

메서드

속성

AmbientReverb

병렬 읽기

Class.SoundService 가 사용하는 환경 음향 사운드 프리셋.

이 속성은 Enum.ReverbType 이 속성이 사운드에 미치는 다양한 환경의 영향을 시뮬레이션합니다. 각 다른 옵션은 FMOD 사운드 엔진에서 사용할 수 있는 미리 설정과 일치합니다. 예를 들어, AmbientReverb를 Hangar로 설정하면 사운드가 다양하게 반응하여 대규모 ����

AmbientReverb 효과를 변경하면 Roblox의 음향 엔진에서 사용하는 다음 속성이 변경됩니다.

  • 반응 쇠퇴 시간
  • 초기 반사 지연 시간
  • 초기 반사와 비슷한 지연 시간 대비 늦은 반응 지연 시간
  • 고주파 참조
  • 고주파수에서 중간 주파수 지속 시간 비율
  • 반응기의 잔여 시간에 대한 반사 밀도를 제어하는 값
  • 지연된 공진 폐기 시 모달 밀도를 제어하는 값
  • 낮은 주파수 참조
  • 낮은 주파수에서 상대적인 방 효과 수준
  • 높은 주파수에서 상대적인 방 효과 수준
  • 방 효과와 관련된 초기 반사 수준
  • 중간 주파수에서 방의 효과 레벨

환경 리버브 프리셋을 더 알아보려는 사용자는 FMOD 문서를 참조하십시오. 그러나 대부분의 개발자는 Enum.ReverbType 이름이 복잡한 지식 없이도 이 설정을 사용할 수 있도록 충분히 설명적입니다.

코드 샘플

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

병렬 읽기
플러그인 보안

DistanceFactor

병렬 읽기

3D Sound 볼륨 손실을 계산할 때 SoundService에 의해 고려되는 스터드 수입니다.

기본적으로 DistanceFactor는 3.33입니다. 즉, 용량 조정의 목적으로 미터는 3.33 스터드로 간주됩니다. DistanceFactor가 높을수록 더 많은 음의 볼륨이 줄어듭니다.


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

개발자는 게임에서 다른 크기를 사용하는 경우에만 이 속성을 변경해야 합니다. 예를 들어, 더 큰 사용자 캐릭터를 사용할 때 개발자는 거리 요소를 줄이려고 할 수 있습니다. 모든 다른 경우 Sound 설정 및 Sound.RollOffMode와 같은 대신 1>Class

Roblox의 3D 음향에 대해 자세히 알아보려는 경우 FMOD 문서를 참조하십시오.

DopplerScale

병렬 읽기

이 속성은 피처 변경 효과(Doppler 효과)에 따라 3D Sound 개체의 피치가 얼마나 변경되는지 결정합니다.

돌플러 효과는 음향 신호의 주파수가 원본과 관측자가 음향 신호에 더 가까이 이동하거나 멀리 이동할 때 변경되는 현상을 설명합니다. 돌플러 효과는 자동차의 사이렌이 지나가는 것과 같이 실제 생활에서 자주 볼 수 있습니다.

이 값을 증가하면 도플러 효과의 영향을 과장하지만, 줄이면 최소화됩니다. 기본적으로 이 속성의 값은 1입니다.


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

Doppler 효과는 2D Sounds 에 영향을 주지 않습니다( SoundsBasePart 또는 2>Class.Selection2> 에 부모되지 않음).

Roblox의 음향 엔진이 사용하는 다양한 설정에 대해 자세히 알아보려면 FMOD 문서를 참조하십시오.

RespectFilteringEnabled

병렬 읽기

RespectFilteringEnabled 속성은 클라이언트에서 Sound 재생이 서버로 복제되는지 여부를 결정하며, 따라서 서버에서 복제됩니다. 즉, LocalScript 가 1> Class.Sound:Play()

RolloffScale

병렬 읽기

3D Sound 볼륨이 얼마나 빠르게 축소되거나 '끄기'를 하는지 설정합니다.

참고, 이 속성은 Sounds의 속성이 Sound.RollOffMode 또는 Enum.RollOffMode로 설정된 경우에만 적용됩니다.

RolloffScale가 높을수록 청중과 음향 사이의 거리가 증가함에 따라 3D 음향의 볼륨이 더욱 빨리 감소합니다.

기본적으로 롤오프 스케일은 1로 설정되며 이는 현실 세계를 시뮬레이션합니다.


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

Roblox의 음향 엔진이 사용하는 다양한 설정에 대해 자세히 알아보려면 FMOD 문서를 참조하십시오.

VolumetricAudio

스크립팅할 수 없음
병렬 읽기

메서드

GetListener

이 함수는 SoundService 현재 청취자 유형과 청취자로 설정된 내용을 반환합니다.

첫 번째 결과는 리스너의 Enum.ListenerType 이며, 두 번째 결과는 리스너 유형에 따라 다릅니다.


<tbody>
<tr>
<td><code>열거형. ListenerType.Camera</code></td>
<td>현재 카메라가 항상 사용되기 때문에 리스너 개체를 반환하지 않습니다. <code>Workspace/CurrentCamera</code></td>
</tr>
<tr>
<td><code>열거형.ListType.CFrame</code></td>
<td>Class.SoundService:Setlistener()에 사용된 데이터 타입 <code>Datatype.CFrame</code>을 반환합니다.</td>
</tr>
<tr>
<td><code>열거형.ListenType.ObjectPosition</code></td>
<td>Class.SoundService:Setlistener()에 사용된 클래스 베이스 파트를 반환합니다.</td>
</tr>
<tr>
<td><code>열거형 라이브러리 타입 개체 프레임</code></td>
<td>Class.SoundService:Setlistener()에 사용된 클래스 베이스 파트를 반환합니다.</td>
</tr>
</tbody>
리스너 유형설명

Class.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)

리스너란 무엇입니까?

청취기는 플레이어가 게임에서 오디오를 듣는 지점을 결정합니다. 3D Sounds (음향 부모에 대한 기본 파트 또는 Attachment )의 청취기는 청취기의 볼륨을 조정하고 플레이어의 오디오 재생을 영향을

기본적으로 수신기는 현재 카메라로 설정됩니다. 하지만, 다양한 종류의 수신기를 사용할 수 있습니다.


반환

현재 Enum.ListenerType 및 청취자가 설정한 것. 청취자가 Enum.ListenerType 또는 nil인 경우 청취자는 일반 BasePart 또는 일반 2>Datatype.CFrame2>일 수 있습니다.

OpenAttenuationCurveEditor

void
플러그인 보안

매개 변수

selectedCurveObjects: Instances

반환

void

OpenDirectionalCurveEditor

void
플러그인 보안

매개 변수

selectedCurveObjects: Instances

반환

void

PlayLocalSound

void

이 기능은 플러그인 없이 모든 클라이언트에서 사용할 수 있습니다. Sound 로 로컬에서 사운드를 재생하려면 클라이언트가 이 함수를 호출할 때만 사운드를 들을 수 있습니다. 이 함수는 Studio 클라이언트의 모든 클라이언트에서 <

매개 변수

sound: Instance

재생할 Sound입니다.


반환

void

코드 샘플

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

클라이언트가 사용하는 리스너를 설정합니다.

첫 번째 매개 변수는 청취기의 Enum.ListenerType 이며, 두 번째 매개 변수는 청취기 입력종속됩니다.

  • 카메라 리스너 유형 - 항상 Workspace.CurrentCamera로 리스너 개체를 반환하지 않습니다.
  • CFrame ListenerType - 사용할 CFrame
  • ObjectPosition ListenerType - 사용할 BasePart
  • ObjectCFrame ListenerType - 사용할 기본 부품

Class.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)

리스너란 무엇입니까?

Class.SoundService 수신기는 플레이어가 게임에서 오디오를 어디에서 듣는지 결정합니다. 3D Sounds) (게임에 부모로 지정된 기본 부품 또는 Class.Attendance 에 연결된 오디오) 수신기는 볼륨 및 왼

기본적으로 수신기는 현재 카메라로 설정됩니다. 하지만, 다양한 종류의 수신기를 사용할 수 있습니다.

매개 변수

listenerType: Enum.ListenerType

enum. listeners.type 의 경청기의 enum.listenerType입니다.

listener: Tuple

Class.BasePart 또는 BasePart 또는 CFrame 또는 1>Datatype.CFrame1> 또는 4>Camera4>용으로 7>ObjectPosition7> 에 대한 Enum.ListenerType0> 에 의존합니다.


반환

void

이벤트