音頻播放通過 Sound 對象發生,發出音頻在體驗中。 Roblox 為每個 音頻資產 設定獨一的 ID ,您可以將它們指定為 Sound 對象來播放特定音效或音樂曲。您可以將它們設置為自動在執行階段時播放,或者設置為
若要修改多個 Sound 對象的播放,您可以將它們分配到音效群組,並且控制整個群組的音量,並且也可以應用動態效果。
建立聲音對象
有三個位置可以創建一個 Sound 對物件,每個位置都決定音頻如何發射和音量變化與用戶位置在體驗中的關係。
地點 | 音訊如何發出 | 音量變更 |
---|---|---|
子磚塊、球體或圓柱體 BasePart 的孩子。 | 音效從零件的整個表面放出。 | 音量會隨著用戶的聲音聽器和零件位置而變化,以及它的大小。 |
Class.AttachChild 的兒子,MeshPart,TrussPart,1>Class.WedgePart1> 或 4>Class.CornerWedgePart4>。 | 音訊會從單個附件點或零件中心發射。 | 音量會隨著使用者的聲音聽器和附件/零件位置而變化。 |
在 SoundService 或 Workspace 內。 | 音頻在整個體驗中發出。 | 音量和鍵盤位置在使用者的聲音聽覺器位置或旋轉方向上保持相同。 |
位置音效
位置音效是用戶可以在體驗中聆聽的音效,體驗中有兩種位置音效:音量和點原始碼。
音量
音量是最接近用戶聲音的音量選擇,因為它會隨著用戶的位置而動態變化,使用 BasePart 與子供 Sound 對
Class
音量音效是適用於任何需要讓聽眾週身而動、隨著聽眾位置而動態變化的音樂場景、演唱會舞台或雨落等環境的音效。當你在不同尺寸和位置的用戶上放置 Sound 對象時,你可以聽到音量音效的週潮。
要創建一個 Sound 對象以對音訊量音效進行量化:
在 Explorer 窗口中,選擇 SoundService 。
在 屬性 窗口中,導航到 音量音效 屬性,然後將其設置為 啟用 。
在 Explorer 窗口中,將鼠標擺動至 BasePart ,然後單擊按鈕。一個上下文菜單顯示。
從選單中插入 聲音 。
在 屬性 窗口中,導航至 SoundId 屬性,並輸入一個有效的 音頻資產 ID。
(可選)) 如果您想要音頻開始播放時體驗開始播放,啟用 播放 屬性。
點數來源
與音量音訊不同,點源音效只能從單一點原始碼發射。這種音效有助於爆炸、撞擊、電子裝置和對話。
要創建一個 Sound 對象為點源音訊效音效:
在 Explorer 窗口中,將鼠標擺過一個附件、桁架、楔形或角楔形,然後單擊 ⊕ 按鈕。一個上下文菜單顯示。
從選單中插入 聲音 。
在 屬性 窗口中,導航至 SoundId 屬性,並輸入一個有效的 音頻資產 ID。
(可選)) 如果您想要音頻開始播放時體驗開始播放,啟用 播放 屬性。
背景音頻
背景音頻在您的體驗中播放相同的音量,無論用戶在您的體驗中移動。這種音頻對於您想要播放給用戶的音樂,尤其是您想要創建多個音頻文件的音樂音效,很有用。
為了在您繼續添加和編輯音頻內, Workspace 的背景音頻中保留所有 Sound 對象,這是最佳方法,因為此服務決定如何 Sound 容器中的音頻播放在體驗。下列示例將新的 SoundService
要創建背景音音訊的 Sound 對象:
在 Explorer 窗口中,將鼠標放在 SoundService 上,然後按一下 ⊕ 按鈕。一個上下文菜單顯示。
從選單中插入 聲音 。
在 屬性 窗口中,導航至 SoundId 屬性,並輸入一個有效的 音頻資產 ID。
(可選)) 如果您想要音頻開始播放時體驗開始播放,啟用 播放 屬性。
(可選) 如果此Sound對象是您想要播放的唯一軌道,啟用其 循環 屬性。
自訂音效對象
Sound 對象屬性可以共同作用,以影響用戶如何體驗您的音音訊,例如:
音量
Class.Sound.Volume|Volume 屬性讓您可以在 0 (噓音) 到 10 (爆音) 之間設置音頻的音量。如果您想要在多個 1>Class.Sound1> 對象上變更音量,請將它們設置在 4>聲音群4> 下。
滾動最小距離和滾動最大距離
RollOffMinDistance 和 Class.Sound.RollOffMaxDistance|
對於點源音訊,RollOffMinDistance 和 RollOffMaxDistance 與音頻音量相同,但這些屬性控制的滾動距離不包圍對物件,只會影響點源音音訊的距離從點原始碼向外。
滾動關閉模式
Class.Sound.RollOffMode|RollOffMode 屬性可讓您決定音樂在用戶耳機和 Sound 對物件之間的距離會如何漸漸消失。您可以將此屬性設置為 4 種值中的一個 Enum.RollOffMode 枚。
滾動關閉模式 | 說明 |
---|---|
Inverse (預設) | 音量最初會從RollOffMinDistance突然消失,但音量漸漸變得更加平滑,直到用戶靠近目標RollOffMaxDistance為止。一旦達到RollOffMaxDistance,音樂就會靜 |
Linear | 音量在 RollOffMinDistance 和 RollOffMaxDistance 之間隨機減少。一旦用戶達到 RollOffMaxDistance,音效將自動關閉。 |
InverseTapered | 音量跟隨倒數模型,當 RollOffMinDistance 和 RollOffMaxDistance 接近時。 音量接近沉默在最大距離點。 |
LinearSquare | 音量在 RollOffMinDistance 和 RollOffMaxDistance 之間漸漸消失,隨著直線方位關係。音效在最大距離點上達到靜止。 |
播放速度
Class.Sound.PlaybackSpeed|PlaybackSpeed 屬性可讓您決定音樂播放的速度。例如,如果您將 PlaybackSpeed 設為值 2 ,音樂播放速度將在音量上升1>21> 倍,而且音樂間
PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
時間位置
Class.Sound.TimePosition|TimePosition 屬性顯示,以秒鐘顯示音頻樣本中的位置。這個屬性對於播放音頻樣本的某個部分,或觸發特定位置的音頻事件發生一次的事件來說是很有用的。例如,下列代碼示例會使一個粒子 emitter 在超出時間範圍內發
local RunService = game:GetService("RunService")
-- 建立新零件
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = workspace
-- 在零件上建立附件
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- 在附件上建立粒子發射器
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- 在附件上建立聲音
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- 播放聲音
sound:Play()
-- 開始檢查讓 emitter 啟用
RunService.Heartbeat:Connect(function()
-- 在音訊頻的時間範圍內啟用發射器;否則,將它禁用
if sound.TimePosition >= 5 and sound.TimePosition < 20 then
emitter.Enabled = true
else
emitter.Enabled = false
end
end)
循環
Class.Sound.Looped|Looped 屬性允許您重玩音頻。當設為 true 時,音頻會重新播放。這是一種有用的方法,可以應用於Sound,以確保您的體驗永遠不會發生中斷。
編程音效對象
播放音頻上下文
除了自動播放音樂通過 Sound 對物件的 Playing 屬性外,您可以從 LocalScript 呼叫 1>Class.Sound:Play()|Play()1> 來播放音樂上下物件。例如:
local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = workspacesound:Play()
如果地方會包含多個軌道,您可以從 LocalScript 中播放特定軌道:
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if musicTrack not musicTrack.IsPlaying thenmusicTrack:Play()end
播放介面音效
您可以通過將 GuiObjects 的界面音效播放到 按鈕 來玩耍,例如 Sound 通過將 1> Class.Sound1> 對象鋪接到 4> Class.GuiButton.Activated|Activated4> 事件聽取器來提供音頻回饋給用
要播放使用者啟動 Class.Sound 對物件音頻時的音頻,當 TextButton 或 ImageButton 啟用時:
local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)