조명 서비스는 경험에서 전체 조명을 제어합니다. 다양한 조정 가능한 속성을 포함하여 조명이 어떻게 표시되고 다른 개체와 상호 작용하는지를 변경할 수 있습니다. 조명 속성 에 설명된 대로.
조명 또한 입자 밀도, 안개, 반사 및 색과 같은 현실적인 대기 효과를 렌더링하기 위한 Atmosphere 개체를 포함할 수 있습니다. 자세한 내용은 대기 효과 를 참조하십시오.
또한, 조명 (Workspace.CurrentCamera 포함) 은 후처리 효과를 포함하여 다음과 같은 효과를 포함할 수 있습니다. SunRaysEffect 및 1> Class.BlurEffect1> 등을 참조하십시오. 4> 후처리 효과4> 에 대한 자세한 내용은
코드 샘플
local Lighting = game:GetService("Lighting")
local TIME_SPEED = 60 -- 1 min = 1 hour
local START_TIME = 9 -- 9am
local minutesAfterMidnight = START_TIME * 60
local waitTime = 60 / TIME_SPEED
while true do
minutesAfterMidnight = minutesAfterMidnight + 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait(waitTime)
end
요약
속성
실내 영역과 같이 하늘로부터 가려진 영역에 적용되는 조명 톤.
플레이스조명 강도.
현재 시간의 일 수를 나타내는 숫자 표시(시간당) Lighting 에 사용됩니다.
태양이나 달을 향한 반사된 빛에 표시된 색상입니다.
태양이나 달을 향한 표면에서 반사되는 색상을 나타냅니다.
환경에서 파생된 실내 조명입니다.
환경에서 얻은 반사 빛.
노출 보상 값.
Class.Lighting 안개의 색상을 제공하는 Lighting 값.
Class.Workspace.CurrentCamera 의 깊이, 어느 안개가 완전히 불투명하게 될 지.
Class.Workspace.CurrentCamera의 깊이, 어느 안개가 시작되는 때부터 보다시작합니다.
위치에 태양과 달의 시간에 영향을 주는 장소의 지리적 위치, 즉 도.
게임에 적용할 복셀 기반 동적 조명을 전환합니다.
야외 영역에 적용된 조명 컬러.
그림자의 흐림을 제어합니다.
3D 세계를 렌더링하는 조명 시스템을 결정합니다. 스크립트 가능. .
Class.Lighting 이 사용하는 현재 시간의 24시간 문자 표시.
메서드
조명 목적으로 자정 이후에 지난 시간을 반환합니다.Returns the number of minutes that have passed after midnight for the purposes of lighting.
0, 0, 0 위치에서 달의 방향을 나타내는 Vector3를 반환합니다.
달의 현재 단계를 반환합니다.
0, 0, 0에서 태양의 방향을 나타내는 Vector3를 반환합니다.
Class.Lighting.TimeOfDay 및 Lighting.ClockTime를 오후 자정 이후의 지정된 분수로 설정합니다.
이벤트
속성
Ambient
실내 영역과 같이 하늘로부터 가려진 영역에 적용되는 조명 톤.
이 속성은 0, 0, 0(블랙)로 기본값이 됩니다.
이 속성의 빨간색, 녹색 및 파란색 채널이 Lighting.OutdoorAmbient의 해당 채널을 초과하지 않으면 색상 변경은 태양/달 밖 지
참고, Lighting.GlobalShadows 가 비활성화되면 덮여 있는 영역과 덮여 있지 않은 영역 사이에 구분이 없습니다. 이 경우 Lighting.OutdoorAmbient 가 무시되고 환경 속성의 색상이 전역에 적용됩니다.
조명 색상에 영향을 주는 다른 속성에 대해서는 Lighting.ColorShiftBottom 및 Lighting.ColorShiftTop 을 참조하십시오.
Brightness
플레이스조명 강도.
이 값을 변경하면 맵 조명에 대한 태양 또는 달의 영향을 변경할 수 있습니다(밝기가 0으로 설정되면 효과가 없음). 빛의 색상이 설정된 경우 Lighting.ColorShift_Top 또는 Class.
이 속성이 잠긴 상태에 있지 않은 경우, 효과는 0에서 2 사이에 클랩됩니다. 즉, 밝기를 10으로 설정하면 2로 설정하는 것과 동일합니다.
참고, Lighting.Ambient 및 Lighting.OutdoorAmbient 는 장소의 밝기를 영향하는 데 사용될 수도 있습니다. 예를 들어, Lighting.OutdoorAmbient 를 255, 25
ClockTime
현재 시간의 일 수를 나타내는 숫자 표시(시간당) Lighting 에 사용됩니다.
참고, 이 속성은 실제 시간과 일치하지 않으며 스크립트가 변경하지 않은 경우 게임 내에서 변경되지 않습니다.
Class.Lighting 시간 형식을 24시간 문자열으로 사용하는 경우 Lighting.CurrentTime 를 사용하십시오. 변경 Lighting.CurrentTime 또는 1>Class.Lighting:SetMinutesAfterMidnight()1> 를 사용하면 이 속성도 변경됩니다.
ClockTime을 사용하려면 시간을 정상화해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Class.Lighting.TimeOfDay를 사용하려면 시간을 정상화하고 문자열 형식으로 표시해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds//3600)local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))local timeString = hours..":"..mins..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
Class.Lighting:SetMinutesAfterMidnight()를 사용하면 추가 처리가 필요하지 않습니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
ColorShift_Bottom
태양이나 달을 향한 반사된 빛에 표시된 색상입니다.
Class.BasePart의 표면은 색상 변경_바닥에 영향을 받으며 태양이나 달의 위치에 대해 BasePart의 위치와 방향을 기반으로 합니다. 태양이 직접 위에 있는 경우 BasePart , 색상 변경은 단지 바닥 표면에만 적용됩니다.
이 효과는 Lighting.Brightness 를 변경하여 증가 또는 감소시킬 수 있습니다.
ColorShift_Bottom은 Lighting.ColorShift_Top 반대 표면에 영향을 줍니다.
참고, Lighting.ColorShift_Top 및 ColorShift_Bottom은 Lighting.Ambient 및 Lighting.OutdoorAmbient 속성과 함께 1> Class.Lighting.Bottom1> 가 큰 경우 영향을 미��
ColorShift_Top
태양이나 달을 향한 표면에서 반사되는 색상을 나타냅니다.
ColorShift_Top에 의해 영향을 받는 BasePart의 표면은 태양이나 달의 위치와 관련하여 BasePart의 위치와 방향에 영향을 줍니다. 태양이 직접 위에 있는 경우 BasePart, 색상 변경은 상위 표면에만 적용됩니다.
이 효과는 Lighting.Brightness 를 변경하여 증가 또는 감소시킬 수 있습니다.
ColorShift_Top이 표면에 노출된 빛에 영향을 주면, Lighting.ColorShift_Bottom 은 표면에서 빛으로부터 보호되는 표면을 영향을 줍니다.
색상 변경 상자 상단 및 하단은 0, 0, 0보다 큰 경우 Lighting.Ambient 및 Lighting.OutdoorAmbient 속성과 상호 작용합니다.
EnvironmentDiffuseScale
환경으로부터 파생된 실내 조명입니다. 이 속성의 값은 기본적으로 0으로 설정됩니다.
Class.Lighting.Ambient 및 Lighting.OutdoorAmbient 속성과 유사하지만 동적이며 하늘과 시간에 따라 변경될 수 있습니다. 이 속성이 증가하면 대기 및 야외 환경이 각각 감소합니다. 이 속성이 증가하면 대기 및 야외 환경이 각각 감소합니다.
또한 하늘 상자가 밤에 나타납니다.
EnvironmentSpecularScale
환경에서 파생된 특수 조명. 이 속성의 값은 기본적으로 0입니다.
부드러운 개체는 환경을 반영합니다. 특히 금속을 더 현실적으로 만드는 데 중요합니다.
ExposureCompensation
이 속성은 음영 레벨 단계 전에 씬의 노출 수준에 적용할 편견 보상 금액을 결정합니다. 기본값은 0입니다.
- +1 값은 두 배의 노출을 나타내고 -1 값은 절반의 노출을 나타냅니다.
- 0의 값은 노출 보상이 이루어지지 않음을 나타냅니다.
- 범위: -5에서 5
이 속성은 복제되며 스크립트 또는 Studio 에서 설정할 수 있습니다.
local Lighting = game:GetService("Lighting")Lighting.ExposureCompensation = 5
이 속성을 사용하여 음영 지도 단계 전에 노출 량을 조정하여 밝은 또는 어두운 영역에서 자세를 더 표시할 수 있습니다. 이는 HDR 파이프 라인으로 이동하는 경우에 필요합니다.
Class.Lighting.Technology 가 Legacy로 설정되면 이 속성에 영향을 주지 않습니다.
local Lighting = game:GetService("Lighting")-- ExposureCompensation은 영향을 미치지 않지만 Lighting의 기술은 유산입니다.Lighting.Technology = Enum.Technology.LegacyLighting.ExposureCompensation = 5
FogColor
Lighting에 Atmosphere 개체가 있으면 안개 속성이 숨겨집니다.
Class.Lighting 안개의 색상을 제공하는 Lighting 값.
안개는 어떻게 작동합니까?
Roblox의 안개는 Workspace.CurrentCamera 방향으로 비행기 편향기로 표시됩니다. 숨겨진 상태의 Lighting.FogStart 속성에서 볼 수 없도록 하려면 색상을 안개 색상으로 혼합합니다. 안개의 효과는 안개 색
Class.Lighting.FogEnd보다 큰 거리에서는 색이 전적으로 Lighting.FogStart에 의해 결정됩니다. 그러나 Lighting.FogEnd 및 1>Class.Lighting.FogEnd1> 사이의 거리에서는 색이 얼마나 혼합되는지 위치에 따라 달라집니다.
Roblox의 안개는 Lighting.FogStart 및 Lighting.FogEnd 사이의 직선 인터폴레이션을 사용합니다. 이 경우 Class.Lighting.
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
주의, 안개는 하늘 상자를 가립니다.
FogEnd
Lighting에 Atmosphere 개체가 있으면 안개 속성이 숨겨집니다.
Class.Workspace.CurrentCamera 의 깊이, 어느 안개가 완전히 불투명하게 될 지.
안개는 어떻게 작동합니까?
Roblox의 안개는 Workspace.CurrentCamera 보기 방향과 직접적으로 관련이 있는 평면에 표시됩니다. 이 효과는 투명하지 않은 상태에서 Lighting.FogStart 속성 사이의 전환에서 나타납니다. 안개의 효과는 색상을 <
FogEnd보다 큰 거리에서는 Lighting.FogColor 가 완전히 결정됩니다. 그러나 Lighting.FogStart 및 FogEnd 사이의 거리에서 색이 얼마나 혼합되는지 하위 위치에 따라 다릅니다.
Roblox의 안개는 안개 시작점 Lighting.FogStart 와 안개 끝점 Lighting.FogStart 사이에서 직선 인터폴레이션을 사용합니다. 이 경우 Class.Lighting.FogStart 가 10이고 2>Class.
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
안개의 색상은 Lighting.FogColor 를 사용하여 조정할 수 있습니다.
주의, 안개는 하늘 상자를 가립니다.
FogStart
Lighting에 Atmosphere 개체가 있으면 안개 속성이 숨겨집니다.
Class.Workspace.CurrentCamera의 깊이, 어느 안개가 시작되는 때부터 보다시작합니다.
안개는 어떻게 작동합니까?
Roblox의 안개는 Workspace.CurrentCamera 보기 방향과 직접적으로 관련이 있는 평면에 표시됩니다. 안개Start 속성에서 표시되지 않고 있으므로, 안개End 속성에서 완전히 불투명합니다. 안개의 효과는 색상을 Class.Lighting.FogColor
Class.Lighting.FogEnd 보다 큰 거리에서는 색이 Lighting.FogColor 에 의해 완전히 결정됩니다. 그러나 안개 시작 및 Lighting.FogEnd 사이의 거리에서 색이 얼마나 혼합되는지에 대한 위치에 따라 색이 얼마나 혼합됩니까?
Roblox의 안개는 FogStart와 Lighting.FogEnd 사이에서 직선적인 인터폴레이션을 사용합니다. 이 경우 FogStart가 10이고 Lighting.FogEnd 가 20인 경우 휴식 거리가 15 스터드이므로
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
안개의 색상은 Lighting.FogColor 를 사용하여 조정할 수 있습니다.
주의, 안개는 하늘 상자를 가립니다.
GeographicLatitude
위치에 태양과 달의 시간에 영향을 주는 장소의 지리적 위치, 즉 도.
태양의 위치를 계산할 때 지구의 기울기도 고려됩니다.
지리적 위치를 변경하면 태양의 위치가 매 Lighting.TimeOfDay마다 변경됩니다. 태양이나 달의 위치를 얻기를 원하는 개발자는 Lighting:GetSunDirection() 또는 Lighting:GetMoonDirection()를 사용해야 합니다.
코드 샘플
local Lighting = game:GetService("Lighting")
local UNIT_Z = Vector3.new(0, 0, 1)
local EARTH_TILT = math.rad(23.5) -- The Earth's tilt in radians.
local HALF_SOLAR_YEAR = 182.6282 -- Half the length of an average solar year
local function getSunDirection()
local gameTime = Lighting:GetMinutesAfterMidnight()
local geoLatitude = Lighting.GeographicLatitude
local dayTime = gameTime / 1440
local sourceAngle = 2 * math.pi * dayTime
local sunPosition = Vector3.new(math.sin(sourceAngle), -math.cos(sourceAngle), 0)
local latRad = math.rad(geoLatitude)
local sunOffset = -EARTH_TILT * math.cos(math.pi * (dayTime - HALF_SOLAR_YEAR) / HALF_SOLAR_YEAR) - latRad
local sunRotation = CFrame.fromAxisAngle(UNIT_Z:Cross(sunPosition), sunOffset)
local sunDirection = sunRotation * sunPosition
return sunDirection
end
print(getSunDirection())
GlobalShadows
게임에서 복셀 기반 동적 조명을 전환합니다.
GlobalShadows는 무엇을 합니까?
설정을 트루로 설정하면 그림자는 태양과 달의 위치에 따라 쉐이딩된 영역에 표시됩니다. 이 영역에 적용된 조명 흐림은 Lighting.Ambient 속성에 따라 결정됩니다. 다른 모든 영역의 조명 흐림은 Lighting.OutdoorAmbient 속성에 따라
비활성화되면 그림자가 그려지지 않으며 실내 및 실외 영역 간에 구분이 없습니다. 결과적으로 Lighting.Ambient 속성이 조명 착색을 결정하며 Lighting.OutdoorAmbient는 작동하지 않습니다.
그림자는 복셀 시스템을 사용하여 계산됩니다, 각 조명 복셀은 4x4x4 스터드입니다. 이것은 개체가 현실적인 그림자를 표시하려면 4x4x4 스터드보다 큰 크기가 되어야 합니다. 그림자는 또한 이동할 때 BaseParts 이 이동할 때 계산됩니다.
참고, 이 속성은 GlobalShadows가 설정된 상관 없이 표시되는 캐릭터의 그림자와 관련이 없습니다.
Roblox의 동적 조명에 대한 자세한 내용은 이 블로그 게시물을 참조하십시오 블로그 게시물.
GlobalShadows 전환
GlobalShadows 설정을 토글하는 개발자는 이 기능을 비활성화하면 장소가 크게 어두워지는 것을 알 수 있습니다. 이는 글로컬 그림자가 비활성화되면 Lighting.Ambient 가 실내와 야외 공간 모두에서 조명
대부분의 경우 개발자는 시각적 모습우수하기 때문에 GlobalShadows를 사용하도록 권장합니다. 비교를 위해 Lighting Properties 가이드 참조.
Intent
OutdoorAmbient
야외 영역에 적용된 조명 컬러.
이 속성은 127, 127, 127로 기본값이 됩니다.
Class.Lighting.Ambient 의 빨간색, 녹색 및 파란색 채널이 이 속성의 해당 채널을 초과하지 않으면
참고, Lighting.GlobalShadows 가 비활성화되면 하늘에 숨겨진 영역과 그렇지 않은 영역 사이에 구분이 없습니다. 이 경우 OutdoorAmbient가 무시되고 Lighting.Ambient 속성의 색이 전역에 적용됩니다.
조명 색상에 영향을 주는 더 많은 속성은 다음을 참조하십시오. Lighting.ColorShift_Bottom 및 Lighting.ColorShift_Top .
Quality
ShadowSoftness
그림자의 흐림도를 제어합니다. 이 속성의 값은 기본적으로 0.2입니다.
이 속성은 Lighting.Technology 모드가 ShadowMap 또는 Future인 경우에만 작동합니다.
Technology
3D 세계를 렌더링하기 위한 조명 시스템을 결정합니다. 스크립트가 아닌 및 Studio에서만 수정할 수 있습니다. 각 옵션의 사용 가능한 옵션과 디테일한 설명은 Enum.Technology에 참조하십시오.
TimeOfDay
Class.Lighting 이 사용하는 현재 시간의 24시간 문자 표시.
참고, 이 속성은 실제 시간과 일치하지 않으며 스크립트가 변경하지 않은 경우 게임 내에서 변경되지 않습니다.
Class.Lighting 시간 사용량의 숫자 측정에 대해 Lighting.ClockTime . Lighting.ClockTime 변경 또는 사용 1>Class.Lighting:SetMinutesAfterMidnight()1> 을 사용하면 이 속성도 변경됩니다.
TimeOfDay를 사용하려면 시간을 정상화하고 문자열 형식으로 표시해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds//3600)local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)))local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60))local timeString = hours..":"..mins..":"..secsLighting.TimeOfDay = timeStringtask.wait()end
Class.Lighting.ClockTime를 사용하려면 시간을 정상화해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Class.Lighting:SetMinutesAfterMidnight()를 사용하면 추가 처리가 필요하지 않습니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
메서드
GetMinutesAfterMidnight
조명 목적으로 자정 이후에 지난 시간을 반환합니다.Returns the number of minutes that have passed after midnight for the purposes of lighting.
이 숫자는 Lighting.ClockTime의 60배에 거의 일치합니다.
이 숫자는 현재 날에 자정 이후에 반환하는 값과 같지 않습니다. Lighting:SetMinutesAfterMidnight() 에 반환하는 값은 항상 정확하지는 않습니다.
Class.Lighting 시간은 문자열로 표시되지 않습니다. Lighting.TimeOfDay 를 참조하십시오.
반환
자정 이후의 시간.
코드 샘플
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())
GetMoonDirection
0, 0, 0 위치에서 달의 방향을 나타내는 Vector3를 반환합니다.
참고, 달이 '설정'가 되었으며 더 이상 표시되지 않을 때,이 함수로 반환되는 Vector3는 맵 아래의 달을 가리키게 됩니다.
달의 위치를 변경하려는 개발자는 Lighting.ClockTime 또는 Lighting.GeographicLatitude 속성을 사용해서는 안 됩니다.
이 함수의 변형은 태양의 방향을 얻기 위해, Lighting:GetSunDirection() 을 사용합니다.
반환
코드 샘플
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())
GetSunDirection
0, 0, 0에서 태양의 방향을 나타내는 Vector3를 반환합니다.
참고, 태양이 설정되고 다시 보이지 않을 때,이 함수에서 반환하는 Vector3는 맵 아래의 태양을 가리키게 됩니다.
태양의 위치를 변경하려는 개발자는 Lighting.ClockTime 또는 Lighting.GeographicLatitude 속성을 사용해서는 안 됩니다.
이 함수의 변형은 달의 방향을 얻기 위해, Lighting:GetMoonDirection() 을 사용합니다.
반환
코드 샘플
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())
SetMinutesAfterMidnight
Class.Lighting.TimeOfDay 및 Lighting.ClockTime를 오후 자정 이후의 지정된 분수로 설정합니다.
어떻게 하루/밤 스크립트를 만들 수 있나요?
SetMinutesAfterMidnight 는 날/밤 사이클에서 사용할 수 있는 숫자 값을 허용하며, 예를 들어, 하루/밤 사이클 Script 에서 줄 수 없는 문자열 형식으로 변환할 필요 없습니다. 또한 24시간을 초과하는 값을 사용하여 다음
Class.Lighting.TimeOfDay를 사용하려면 시간을 정상화하고 문자열 형식으로 표시해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local seconds = minutesNormalised * 60local hours = string.format("%02.f", seconds // 3600)local mins = string.format("%02.f", math.floor(seconds / 60 - (hours * 60)))local secs = string.format("%02.f", math.floor(seconds - hours * 3600 - mins * 60))local timeString = hours .. ":" .. mins .. ":" .. secsLighting.TimeOfDay = timeStringtask.wait()end
Class.Lighting.ClockTime를 사용하려면 시간을 정상화해야 합니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
Class.Lighting:SetMinutesAfterMidnight()를 사용하면 추가 처리가 필요하지 않습니다.
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
매개 변수
자정 이후의 시간.
반환
코드 샘플
local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)
이벤트
LightingChanged
이 이벤트는 Lighting 속성이 변경되거나 Sky 가 추가되거나 Lighting 에서 제거되면 발생합니다.
Class.Lighting의 대부분의 속성이 변경될 때 이 이벤트가 발생하지만, 몇 가지 예외는 개발자가 알아야 합니다.
- 이 이벤트는 Lighting.GlobalShadows를 변경하면 발생하지 않습니다
이 동작이 원하지 않는 경우 Object.Changed 이벤트 또는 Object:GetPropertyChangedSignal() 함수를 사용할 수 있습니다.
매개 변수
코드 샘플
local Lighting = game:GetService("Lighting")
local function onLightingChanged(skyboxChanged)
if skyboxChanged then
print("Skybox has changed")
else
print("The skybox did not change.")
end
end
Lighting.LightingChanged:Connect(onLightingChanged)