All GUI's break randomly when testing or playing my game. I tried fixing it by putting a local script in StarterPlayer in StarterPlayerScripts, the local script is below. After that, i put a CFrameValue and renamed it Renderable inside parts but that does not work, i don't know anymore solutions. But, the script won't work! Idk why so someone please help me, thank you.
local HumanoidRootPart local Workspace = game.Workspace local Player = game.Players.LocalPlayer local RenderParts = {} local MaxRenderRadius = 50 local MinRenderOutRadius = MaxRenderRadius * 1 for i,v in pairs(game.Workspace:GetChildren()) do if v:FindFirstChild("Renderable") then table.insert(RenderParts, v) end end local function CharacterAdded(Character) if Character then HumanoidRootPart = Character:WaitForChild("HumanoidRootPart") end end CharacterAdded(Player.Character) Player.CharacterAdded:Connect(CharacterAdded) local function SetPartVisible(PartName, Visible) if Visible == false then PartName.Parent = nil end if Visible == true then PartName.Parent = Workspace end end while true do wait(0.1) if HumanoidRootPart then for i=1, #RenderParts do if RenderParts[i].ClassName ~= "Model" then if (HumanoidRootPart.Position - RenderParts[i].Position).Magnitide >= MinRenderOutRadius then SetPartVisible(RenderParts[i], false) end end if RenderParts[i].ClassName == "Model" then if (HumanoidRootPart.Position - RenderParts[i]:GetPrimaryPartCFrame().p).Magnitide >= MinRenderOutRadius then SetPartVisible(RenderParts[i], false) end end if RenderParts[i].ClassName ~= "Model" then if (HumanoidRootPart.Position - RenderParts[i].Position).Magnitide <= MaxRenderRadius then SetPartVisible(RenderParts[i], true) end end if RenderParts[i].ClassName == "Model" then if (HumanoidRootPart.Position - RenderParts[i]:GetPrimaryPartCFrame().p).Magnitide >= MaxRenderRadius then SetPartVisible(RenderParts[i], true) end end end end end