In the past I've had some trouble with ClickDetectors working correctly with filtering enabled. The problem I was having is that the function using the ClickDetector wasn't returning the player. Now this was about three months ago and I haven't touched a ClickDetector since. Here's what the script looked like from my memory,
game-->Workspace-->Part-->ClickDetector,Script
script.Parent.MouseClick:connect(function(plr)
plr:FindFirstChild("Sound"):Play()--error
end)
Now let's say this works now, let me ask my question. Would using something like the following work?
--Local Script in starter pack,
local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()
mouse.Button1Down:connect(function()--Button1Down might be the wrong call, I don't remember. You get the point.
local target = mouse.Target
if not target then return end
if target.Name == "PlaySound58360" then
plr.PlaySound58360:Play()
end
end)
Now sure this might be a bit more complicated, but it works the same. So my real question finally is, which one is better? Does getting the players mouse cause lag? Which one would be better and why.
Thank you.

2 comments
Thank you.
Great answer :3