Lighting
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Le service Éclairage contrôle le contrôle global du lumage dans une expérience. Il inclut une gamme de propriétés ajustables que vous pouvez utiliser pour modifier la façon dont le lumage apparaît et interagit avec d'autres objets, comme décrit dans propriétés d'éclairage.
L'éclairage peut également contenir un Atmosphere objet pour rendre des effets atmosphériques réalistes, y compris la densité des particules, la lumière floue, le reflet et la couleur. Voir effets atmosphériques pour plus de détails.
En outre, l'éclairage (ainsi que Workspace.CurrentCamera ) peuvent contenir des effets post-traitement tels que SunRaysEffect et 1> Class.BlurEffect1>. Voir 4> les effets post-traitement4> pour plus d'informations.
Échantillons de code
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
Résumé
Propriétés
L'éclairage de teinture appliqué aux zones qui sont occlées du ciel, telles que les zones intérieures.
L'intensité de l'éclairage dans l'emplacement.
Une représentation numérique (en heures) du temps actuel de la journée utilisée par Lighting .
La teinte représentée dans la lumière reflète les autres surfaces à celles qui sont face au soleil ou à la lune.
La teinte représentée par la lumière reflétée des surfaces qui face au soleil ou à la lune.
Lumière ambiante qui est dérivée de l'environnement.
Lumière spectrale issue de l'environnement.
La valeur de compensation de l'exposition.
La profondeur à partir de la Workspace.CurrentCamera, en studs, à laquelle le brouillard sera complètement opaque.
La profondeur à partir de la Workspace.CurrentCamera, en studs, à laquelle le brouillard commence à se afficher.
La latitude géographique, en degrés, de la scène, affectant le résultat de `Class.Lighting time on the position of the sun and moon.
Bascule l'éclairage dynamique basé sur les voxels pour le jeu.
L'éclairage utilisé pour les zones extérieures.
Contrôle la façon dont les ombres sont floues.
Détermine le système d'éclairage pour rendre le monde 3D. Non scriptable. .
Une représentation de chaîne de 24 heures de l'heure actuelle de la journée utilisée par Lighting.
Méthodes
Renvoie le nombre de minutes qui sont passées après minuit aux fins de l'éclairage.
Retourne un Vector3 représentant la direction de la lune à partir de la position 0, 0, 0.
Retourne la phase actuelle de la lune.
Retourne un Vector3 représentant la direction du soleil à partir de la position 0, 0, 0.
Définit Lighting.TimeOfDay et Lighting.ClockTime sur le nombre de minutes donné après minuit.
Évènements
Propriétés
Ambient
L'éclairage de teinture appliqué aux zones qui sont occlées du ciel, telles que les zones intérieures.
Cette propriété par défaut à 0, 0, 0 (noir).
Tant que les canaux rouges, verts et bleus de cette propriété ne dépassent pas les canaux correspondants dans Lighting.OutdoorAmbient la change en couleur sera réservée aux zones ombrées par le soleil/lune. La valeur de Class.Lighting.OutdoorAmb
Remarquez que, lorsque Lighting.GlobalShadows est désactivé, il n'y a pas de distinction entre les zones occluses et les zones qui ne le sont pas. Dans ce cas, Lighting.OutdoorAmbient sera ignoré et la couleur de la propriété Ambient sera appliquée partout.
Pour plus de propriétés qui influencent la couleur de l'éclairage, voir Lighting.ColorShiftBottom et Lighting.ColorShiftTop.
Brightness
L'intensité de l'éclairage dans l'emplacement.
Changer cette valeur affectera l'impact de la source lumineuse (soleil ou lune) sur l'éclairage de la carte. Lorsque la luminosité est réglée sur 0, il n'y aura aucun effet en raison de Lighting.ColorShift_Top ou Lighting.ColorShift_Bottom comme la source lumineuse n'a pas d'effet
Bien que cette propriété ne soit pas bloquée, l'effet est bloqué entre 0 et 2. Ce qui signifie que le paramètre de luminosité est défini à 10 ne sera pas différent de le définir à 2.
Notez, Lighting.Ambient et Lighting.OutdoorAmbient peuvent également être utilisés pour influencer la façon dont un lieu apparaît. Par exemple, en réglant Lighting.OutdoorAmbient sur 255, 255, 255, le lieu apparaîtra plus brillant
ClockTime
Une représentation numérique (en heures) du temps actuel de la journée utilisée par Lighting .
Remarquez que cette propriété ne correspond pas à l'heure réelle du jour et ne changera pas pendant le jeu à moins qu'elle n'ait été modifiée par un script.
Pour une mesure de Lighting de temps au format d'une chaîne de 24 heures, utilisez Lighting.CurrentTime. Changer Lighting.CurrentTime ou utiliser 1> Class.Lighting:SetMinutesAfterMidnight()1> changera également cette propriété.
L'utilisation de ClockTime nécessite le temps pour être normalisé :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'utilisation de Lighting.TimeOfDay nécessite le temps pour être normalisé et une forme de chaîne formatée :
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
L'utilisation de Lighting:SetMinutesAfterMidnight() n'exige pas de traitement supplémentaire :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
ColorShift_Bottom
La teinte représentée dans la lumière reflète les autres surfaces à celles qui sont face au soleil ou à la lune.
Les surfaces d'un BasePart influencées par ColorShift_Bottom dépendent de la position et de l'orientation de la BasePart par rapport à la position du soleil ou de la lune. Où le soleil est directement au-dessus d'un BasePart, le changement de couleur ne s'appliquera qu'à la surface inférieure.
Cet effet peut être augmenté ou réduit en modifiant Lighting.Brightness.
ColorShift_Bottom influence les mêmes Lighting.ColorShift_Top
Note, Lighting.ColorShift_Top et ColorShift_Bottom interagiront avec les propriétés Lighting.Ambient et Lighting.OutdoorAmbient si elles sont plus grandes que 0, 0, 0. De plus, l'influence de ColorShift_Bottom peut être très difficile
ColorShift_Top
La teinte représentée par la lumière reflétée des surfaces qui face au soleil ou à la lune.
Les surfaces d'un BasePart influencées par ColorShift_Top dépendent de la position et de l'orientation de la BasePart par rapport à la position du soleil ou de la lune. Où le soleil est directement au-dessus d'un BasePart, le changement de couleur ne s'appliquera que sur la surface supérieure.
Cet effet peut être augmenté ou réduit en modifiant Lighting.Brightness.
Alors que ColorShift_Top influence les surfaces exposées à la lumière, Lighting.ColorShift_Bottom influence les surfaces protégées de la lumière.
Remarquez que ColorShift_Top et ColorShift_Bottom interagiront avec les propriétés Lighting.Ambient et Lighting.OutdoorAmbient si elles sont plus grandes que 0, 0, 0.
EnvironmentDiffuseScale
Lumière ambiante qui dérive de l'environnement. La valeur de cette propriété par défaut est 0.
Il est similaire à Lighting.Ambient et Lighting.OutdoorAmbient propriété mais il est dynamique et peut changer en fonction du ciel et de l'heure de la journée. Il est recommandé lorsque cette propriété est augmentée, Ambient et OutdoorAmbient sont respectivement réduits.
Il fait également apparaître le skybox la nuit.
EnvironmentSpecularScale
Lumière spectrale issue de l'environnement. La valeur de cette propriété par défaut est 0.
Il fera en sorte que les objets lisibles reflètent l'environnement. Particulièrement important pour rendre le métal plus réaliste.
ExposureCompensation
Cette propriété détermine la quantité de compensation d'exposition qui s'applique au niveau d'exposition de la scène avant la étape de la carte tonale. Par défaut, 0.
- Une valeur de +1 indique deux fois plus d'exposition et -1 signifie la moitié de l'exposition.
- Une valeur de 0 indique que aucune compensation d'exposition ne sera effectuée.
- Plage : -5 à 5
Cette propriété est répliquée et peut être définie à partir de scripts ou Studio.
local Lighting = game:GetService("Lighting")Lighting.ExposureCompensation = 5
Vous pouvez utiliser cette propriété pour ajuster la quantité d'exposition avant la étape de la carte tonale pour montrer plus de détails dans des zones plus claires ou plus sombres. Cela est nécessaire à mesure que nous passons à une pipeline HDR.
Lorsque Lighting.Technology est réglé sur Legacy, cette propriété n'a aucun effet.
local Lighting = game:GetService("Lighting")-- ExposureCompensation n'a aucun effet car la technologie de Lighting est héritageLighting.Technology = Enum.Technology.LegacyLighting.ExposureCompensation = 5
FogColor
Les propriétés de brouillard sont cachées lorsque Lighting contient un objet Atmosphere.
Une valeur Color3 donnant la teinte de Lighting brouillard.
Comment le brouillard fonctionne-t-il ?
Le brouillard dans Roblox est affiché dans un avion perpendiculaire à la direction Workspace.CurrentCamera. Il fait pénétrer entre la propriété Lighting.FogStart où il n'est pas visible, et la propriété Lighting.FogEnd où il est complètement opaque. L'effet du brouillard est qu'il mélange la couleur
À des distances plus grandes que Lighting.FogEnd, la couleur sera déterminée entièrement par la couleur de brouillard. Cependant, à des distances entre Lighting.FogStart et Lighting.FogEnd, le degré dans lequel la couleur est mélangée dépend de la position.
Roblox utilise l'interpolation linéaire entre Lighting.FogStart et Lighting.FogEnd. Cela signifie que si Lighting.FogStart est 10 et que 1> Class
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
Remarquez que le brouillard ne masque pas la boîte de ciel.
FogEnd
Les propriétés de brouillard sont cachées lorsque Lighting contient un objet Atmosphere.
La profondeur à partir de la Workspace.CurrentCamera, en studs, à laquelle le brouillard sera complètement opaque.
Comment le brouillard fonctionne-t-il ?
Le brouillard dans Roblox est affiché dans un avion perpendiculaire à la direction de la vue. Il fait pudel entre le Workspace.CurrentCamera propriété où il n'est pas visible, à la propriété FogEnd où il est complètement opaque. L'effet du brouillard est qu'il mélange la couleur avec la propriété Lighting.FogStart .
À des distances plus grandes que FogEnd, la couleur sera déterminée entièrement par le Lighting.FogColor. Cependant, à des distances entre Lighting.FogStart et FogEnd, le degré dans lequel la couleur est mélangée dépend de la position.
Le brouillard de Roblox utilise l'interpolation linéaire entre Lighting.FogStart et FogEnd. Cela signifie que si Lighting.FogStart est 10 et FogEnd est 20, à une distance de 15 studs le brouillard sera à 50%. Cela signifie que la couleur d'un pixel à
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
La couleur du brouillard peut être ajustée en utilisant Lighting.FogColor.
Remarquez que le brouillard ne masque pas la boîte de ciel.
FogStart
Les propriétés de brouillard sont cachées lorsque Lighting contient un objet Atmosphere.
La profondeur à partir de la Workspace.CurrentCamera, en studs, à laquelle le brouillard commence à se afficher.
Comment le brouillard fonctionne-t-il ?
Le brouillard dans Roblox est affiché dans un avion perpendiculaire à la direction de la vue. Il fait pénétrer entre la propriété FogStart où il n'est pas visible, à la propriété FogEnd où il est complètement opaque. L'effet du brouillard est qu'il mélange la couleur avec la propriété Class.Lighting.FogColor.
À des distances plus grandes que Lighting.FogEnd, la couleur sera déterminée entièrement par le Lighting.FogColor. Cependant, à des distances entre FogStart et Lighting.FogEnd, le degré dans lequel la couleur est mélangée dépend de la position.
Le brouillard de Roblox utilise l'interpolation linéaire entre FogStart et Lighting.FogEnd. Cela signifie que si FogStart est 10 et Lighting.FogEnd est 20, à une distance de 15 studs le brouillard sera à 50%. Cela signifie que la couleur d'un pixel à 15 stud
local Lighting = game:GetService("Lighting")-- fog will fade between 25 and 200 studsLighting.FogStart = 25Lighting.FogEnd = 200
La couleur du brouillard peut être ajustée en utilisant Lighting.FogColor.
Remarquez que le brouillard ne masque pas la boîte de ciel.
GeographicLatitude
La latitude géographique, en degrés, de la scène, affectant le résultat de `Class.Lighting time on the position of the sun and moon.
Lors du calcul de la position du soleil, la pente de la terre est également prise en compte.
Changer GeographicLatitude changera la position du soleil à chaque Lighting.TimeOfDay. Les développeurs qui cherchent à obtenir la position du soleil ou de la lune devraient utiliser Lighting:GetSunDirection() ou Lighting:GetMoonDirection().
Échantillons de code
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
Bascule l'éclairage dynamique basé sur les voxels dans le jeu
Qu'est-ce que GlobalShadows fait ?
Lorsqu'il est réglé sur vrai, les ombres sont rendues dans les zones ombrées en fonction de la position du soleil et de la lune. L'ombre de lumière appliqué à ces zones est déterminé par la propriété Lighting.Ambient. L'ombre de lumière dans toutes les autres zones est déterminé par la propriété Lighting.OutdoorAmbient.
Lorsqu'il est désactivé, les ombres ne sont pas dessinées et aucune distinction n'est faite entre les zones intérieures et extérieures. Par resultats, la propriété Lighting.Ambient détermine la teinte d'éclairage et Lighting.OutdoorAmbient ne fera rien.
Les ombres sont calculées à l'aide d'un système de voxels, et chaque voxel d'éclairage est 4x4x4 studs. Cela signifie que les objets doivent être plus grands que 4x4x4 studs pour afficher une ombre réaliste. Les ombres sont également recalculées lorsque BaseParts se déplacent.
Remarquez que cette propriété n'est pas liée aux ombres des personnages qui sont affichés indépendamment de ce que GlobalShadows est réglé.
Pour plus d'informations sur l'éclairage dynamique de Roblox, veuillez voir ce poste de blog.
Activer les ombres globales
Les développeurs qui basculent le paramètre GlobalShadows remarqueront que le désactivant le rendra beaucoup plus sombre. C'est parce que lorsque GlobalShadows est désactivé, Class.Lighting.Ambient est utilisé pour calculer la teinte d'éclairage dans les espaces intérieurs et extérieurs. Cette sombreur peut être résolue en réglant Class.Lighting.Ambient sur une vale
Dans la plupart des cas, il est recommandé aux développeurs de laisser GlobalShadows activé en raison de l'apparence visuelle supérieure. Voir guide Lighting Properties pour un comparaison.
Intent
OutdoorAmbient
L'éclairage utilisé pour les zones extérieures.
Cette propriété par défaut à 127, 127, 127.
Dans la mesure où les canaux rouges, verts et bleus de Lighting.Ambient ne dépassent pas les canaux correspondants dans cette propriété, la teinte de l'éclairage dans les zones extérieures sera détermin
Remarquez, lorsque Lighting.GlobalShadows est désactivé, il n'y a pas de distinction entre les zones occlées du ciel et les zones qui ne le sont pas. Dans ce cas, OutdoorAmbient sera ignoré et la couleur de la propriété Lighting.Ambient sera appliquée partout.
Pour plus de propriétés qui influencent la couleur de l'éclairage, voir Lighting.ColorShift_Bottom et Lighting.ColorShift_Top.
Quality
ShadowSoftness
Contrôle la qualité des ombres. La valeur par défaut de cette propriété est 0,2.
Cette propriété ne fonctionne que lorsque le mode Lighting.Technology est ShadowMap ou Future et que le périphérique est capable de ShadowMap.
Technology
Détermine le système d'éclairage pour rendre le monde 3D. Non scriptable et seulement modifiable dans Studio. Voir Enum.Technology pour les options disponibles et Technologie d'éclairage pour les détails et les effets visuels de chaque option.
TimeOfDay
Une représentation de chaîne de 24 heures de l'heure actuelle de la journée utilisée par Lighting.
Remarquez que cette propriété ne correspond pas à l'heure réelle du jour et ne changera pas pendant le jeu à moins qu'elle n'ait été modifiée par un script.
Pour une mesure numérique de Lighting utilisation du temps Lighting.ClockTime . Changer Lighting.ClockTime ou utiliser 1> Class.Lighting:SetMinutesAfterMidnight()1> changera également cette propriété.
L'utilisation de TimeOfDay nécessite le temps pour être normalisé et une forme de chaîne formatée :
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
L'utilisation de Lighting.ClockTime nécessite le temps de normalisation :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'utilisation de Lighting:SetMinutesAfterMidnight() n'exige pas de traitement supplémentaire :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Méthodes
GetMinutesAfterMidnight
Renvoie le nombre de minutes qui sont passées après minuit aux fins de l'éclairage.
Ce nombre sera presque identique à Lighting.ClockTime multiplié par 60.
Ce nombre ne sera pas toujours équalé à la valeur donnée dans Lighting:SetMinutesAfterMidnight() car il renvoie des minutes après minuit le jour actuel.
Pour Lighting la forme du temps en chaîne, voir Lighting.TimeOfDay.
Retours
Le nombre de minutes après minuit.
Échantillons de code
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())
GetMoonDirection
Retourne un Vector3 représentant la direction de la lune à partir de la position 0, 0, 0.
Remarquez que, lorsque la lune aura configureret qu'elle ne sera plus visible, le Vector3 renvoyé par cette fonction continuera à pointer vers la lune sous la carte.
Les développeurs qui souhaitent modifier le positionnement de la lune devraient utiliser les propriétés Lighting.ClockTime ou Lighting.GeographicLatitude.
Une variante de cette fonction existe pour obtenir la direction du soleil, Lighting:GetSunDirection() .
Retours
Échantillons de code
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())
GetMoonPhase
Retourne la phase actuelle de la lune. Il n'y a aucun moyen de modifier la phase de la lune, donc cela va toujours renvoyer 0,75.
Retours
GetSunDirection
Retourne un Vector3 représentant la direction du soleil à partir de la position 0, 0, 0.
Remarquez, lorsque le soleil s'est couché et n'est plus visible, le Vector3 renvoyé par cette fonction continuera à pointer vers le soleil en dessous de la carte.
Les développeurs qui souhaitent modifier le positionnement du soleil devraient utiliser les propriétés Lighting.ClockTime ou Lighting.GeographicLatitude.
Une variante de cette fonction existe pour obtenir la direction de la lune, Lighting:GetMoonDirection() .
Retours
Échantillons de code
local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())
SetMinutesAfterMidnight
Définit Lighting.TimeOfDay et Lighting.ClockTime sur le nombre de minutes donné après minuit.
Comment puis-je faire un script jour/nuit ?
SetMinutesAfterMidnight permet d'utiliser une valeur numérique, par exemple dans un cycle jour/nuit Script, sans le besoin de convertir en une chaîne dans le format requis par Lighting.TimeOfDay. Il permet également les valeurs supérieures à 24 heures à être données qui correspondent aux heures du lendemain. Voir les exemples de code ci-dessous pour un exemple.
L'utilisation de Lighting.TimeOfDay nécessite le temps pour être normalisé et une forme de chaîne formatée :
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
L'utilisation de Lighting.ClockTime nécessite le temps de normalisation :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1local minutesNormalised = minutesAfterMidnight % (60 * 24)local hours = minutesNormalised / 60Lighting.ClockTime = hourstask.wait()end
L'utilisation de Lighting:SetMinutesAfterMidnight() n'exige pas de traitement supplémentaire :
minutesAfterMidnight = 0while true dominutesAfterMidnight += 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait()end
Paramètres
Le nombre de minutes après minuit.
Retours
Échantillons de code
local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)
Évènements
LightingChanged
Cet événement se déclenche lorsqu'une propriété Lighting est modifiée ou qu'un Sky est ajouté ou supprimé de Lighting.
Bien que cet événement se déclenche lorsque la plupart des propriétés de Lighting sont modifiées, les développeurs doivent être au courant des quelques exceptions :
- Changer Lighting.GlobalShadows ne déclenchera pas cet événement
- Les propriétés de brouillard, Lighting.FogColor , Lighting.FogStart et Lighting.FogEnd ne déclencheront pas cet événement
Dans les cas où ce comportement n'est pas souhaité, l'événement Object.Changed ou la fonction Object:GetPropertyChangedSignal() peuvent être utilisés.
Paramètres
Échantillons de code
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)