I am making an interacting system, and I created the basic Interact system, how do I make it more efficient?

-- Local Script
local main = require(game.ReplicatedStorage.Resources.Modules.Shared.MainFramework)
main:setupScript() -- this is just to make the Services table work for my game.
local userInputService = game:GetService("UserInputService")
local runService = Services.RunService
local players = Services.Players
local localPlayer = players.LocalPlayer
local KEYBIND_FOR_INTERACTION = Enum.KeyCode.E
local debounceforTween = false
local deb = false
local function tweeninandout()

end
local remoteEvent = Services.ReplicatedStorage.Resources.Events.OnInputDetected
local function onInputBegan(...)
	for _, interactive in ipairs(workspace.Interactives:GetChildren()) do
		if interactive:FindFirstChild("IsInteractive") then
			local Character = localPlayer.Character
			if Character then
				local humanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
				if humanoidRootPart then
					if Character:FindFirstChildWhichIsA("Humanoid").Health <= 0 then
						break
					else
						local magnitude = (interactive.Position - humanoidRootPart.Position).magnitude
						if magnitude <= interactive.IsInteractive.Range.Value then
							local b = tweeninandOut()
							if b then
								return
							end
							remoteEvent:FireServer(interactive)
						end
					end
				end
			end
		end
	end
end
userInputService.InputBegan:Connect(function(input, gameProcessedEvent)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		if input.KeyCode == KEYBIND_FOR_INTERACTION then
			onInputBegan()
		end
	end
end)
local interactives = workspace.Interactives:GetChildren()
script.Parent.InteractiveFrame.KeyLabel.MouseButton1Click:Connect(onInputBegan)
runService.RenderStepped:Connect(function(rs)
	if deb then return end
	deb = true
	script.Parent.InteractiveFrame.Visible = false
	script.Parent.Overlay.Visible = false
	for _, interactive in pairs(interactives) do
		local character = localPlayer.Character
		if character then
			local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
			if humanoidRootPart then
				local magnitude = (interactive.Position - humanoidRootPart.Position).magnitude
				if magnitude <= interactive.IsInteractive.Range.Value then
					script.Parent.InteractiveFrame.Visible = true
					script.Parent.Overlay.Visible = true
					script.Parent.InteractiveFrame.InteractText.Text = interactive.IsInteractive.TextToShow.Value
					local Vector3toUDim2 = workspace.CurrentCamera:WorldToScreenPoint(interactive.Position)
					script.Parent.InteractiveFrame.Position = UDim2.new(0, Vector3toUDim2.X, 0, Vector3toUDim2.Y);
					script.Parent.Overlay.Position = UDim2.new(0, Vector3toUDim2.X, 0, Vector3toUDim2.Y);
				end
			end
		end
	end
	deb = false
end)