The MODULE SCRIPT below:
local AudioPlayer = {}
local ContentProvider = game:GetService("ContentProvider")
AudioPlayer.preloadAudio = function(assetArray)
local audioAssets = {}
for name, audioID in pairs(assetArray) do
local audioInstance = Instance.new("Sound")
audioInstance.SoundId = "rbxassetid://" .. audioID
audioInstance.Name = name
audioInstance.Parent = game.Workspace
table.insert(audioAssets, audioInstance)
end
local success, assets = pcall(function()
ContentProvider:PreloadAsync(audioAssets)
end)
end
AudioPlayer.playAudio = function(assetName)
local audio = game.Workspace:FindFirstChild(assetName)
if not audio then
warn("Could not find asset.")
return
end
if audio.IsLoaded then
audio.Loaded:wait()
end
audio:Play()
end
return AudioPlayer