Help with changing material of part at night

Hello there, my game has a neon city, and the windows have the neon material as lighting. I have made a script for turning on and off lights at night, and was wondering if it is possible to make all neon parts in a model turn into smoothplastic at day?

You would need to get all the neon parts you want to change in order to do this. I would suggest to do this with either parenting the neon parts to the same source or with CollectionService. Ask if you would like me to show you how to do this with CollectionService, which would require manually tagging the neon parts.

Here’s some scripting that would achieve this.

local NightBegin = 19 -- Time when night beings
local NightEnd = 7 -- Time when night ends

local Lighting = game:GetService("Lighting")

local NeonParts = workspace:WaitForChild("NeonParts") -- Set this to a object which contains the neon parts

local NeonState = true

Lighting:GetPropertyChangedSignal("ClockTime"):Connect(function()
	local CurrentTime = Lighting.ClockTime
	
	if (not NeonState) and CurrentTime >= NightBegin or CurrentTime <= NightEnd then
		for _, Part in pairs(NeonParts:GetChildren()) do
			Part.Material = Enum.Material.Neon
		end
		NeonState = true
	elseif NeonState then
		for _, Part in pairs(NeonParts:GetChildren()) do
			Part.Material = Enum.Material.SmoothPlastic
		end
		NeonState = false
	end
end)

Yikes, there’s no way to just select neon parts?

If I were you, I’d make a folder in the workspace (named “Lights”) and keep all the lights in there. Then this script would work.

local Lights = game.Workspace.Lights:GetChildren()

for _, v in pairs(Lights) do
v.Material = "Your material name"
end

Make this code run whenever you want to change them.

2 Likes