Lighting

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar
Dienst

Die Beleuchtungsdienstleistung kontrolliert die globale Beleuchtung in einem Erlebnis. Es umfasst eine Reihe von anpassbaren Eigenschaften, die Sie verwenden können, um zu ändern, wie die Beleuchtung aussieht und mit anderen Objekten interagiert, wie in Beleuchtungseigenschaften beschrieben.

Beleuchtung kann auch ein Atmosphere -Objekt enthalten, um realistische Atmosphäreneffekte zu rendern, einschließlich Partikeldichte, Nebel, Blenden und Farbe. Siehe Atmosphäreneffekte für Details.

Darüber hinaus kann Beleuchtung (zusammen mit Workspace.CurrentCamera ) post-Processing-Effekte enthalten, wie z. B. SunRaysEffect und 1> Class.BlurEffect1>. Siehe 4> Post-Processing-Effekte4> für weitere Informationen.

Code-Beispiele

Day/Night Cycle

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

Zusammenfassung

Eigenschaften

Methoden

Ereignisse

Eigenschaften

Ambient

Parallel lesen

Die Beleuchtungsstufe, die auf Bereiche angewendet wird, die vom Himmel abgesperrt sind, wie Innenbereiche.

Dieses Eigenschaften-Standard ist 0, 0, 0 (Schwarz).

Solange die roten, grünen und blauen Kanäle dieser Eigenschaft nicht die entsprechenden Kanäle in Lighting.OutdoorAmbient überschreiten, wird der Effekt der Helligkeit für Bereiche, die von der Sonne/Mond abgehalten sind, reserviert. Die effekt

Beachten Sie, dass, wenn Lighting.GlobalShadows deaktiviert ist, keine Unterschiede zwischen abgedeckten und nicht abgedeckten Bereichen bestehen. In diesem Fall wird Lighting.OutdoorAmbient ignoriert und die Farbe aus der Umgebungseigenschaft angewendet, und die Helligkeit aus der Eigenschaft Umgebung wird überall ignoriert.

Für weitere Eigenschaften, die die Farbe der Beleuchtung beeinflussen, siehe Lighting.ColorShiftBottom und Lighting.ColorShiftTop.

Brightness

Parallel lesen

Die Intensität der Beleuchtung im Ort.

Durch Ändern dieses Werte wird die Wirkung der Lichtquelle (Sonne oder Mond) auf die Beleuchtung der Karte beeinflusst. Wenn die Helligkeit auf 0 eingestellt ist, wird kein Effekt durch Lighting.ColorShift_Top oder Lighting.ColorShift_Bottom als Lichtquelle geändert. Beachten Sie, dass dies

Während dieses Eigenschaft nicht geklemmt ist, wird der Effekt zwischen 0 und 2 geklemmt. Das bedeutet, dass die Helligkeit auf 10 zu setzen das Gleiche ist wie das Setzen auf 2.

Beachten Sie, Lighting.Ambient und Lighting.OutdoorAmbient können auch verwendet werden, um die Helligkeit eines Ortes zu beeinflussen. Zum Beispiel, indem Sie Lighting.OutdoorAmbient auf 255, 255, 255 einstellen, wird

ClockTime

Nicht repliziert
Parallel lesen

Eine nummerische Repräsentation (in Stunden) der aktuellen Tageszeit, die von Lighting verwendet wird.

Beachten Sie, dass diese Eigenschaft nicht mit der tatsächlichen Tageszeit übereinstimmt und während des Spiels nicht geändert wird, es sei denn, es wurde von einem Skript, das. PL: die Skriptsgeändert.

Für eine Messung von Lighting Zeit in 24-Stunden-Strich verwenden Lighting.CurrentTime. Ändern Sie Lighting.CurrentTime oder verwenden Sie 1> Class.Lighting:SetMinutesAfterMidnight()1>, um diese Eigenschaftenzu ändern.

Um ClockTime verwenden zu können, muss die Zeit normalisiert sein:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Die Verwendung von Lighting.TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local 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..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

ColorShift_Bottom

Parallel lesen

Die Farbe, die in das Licht reflektierenden Oberflächen repräsentiert ist, gegenüber derjenigen, die der Sonne oder dem Mond gegenüberstehen.

Die Oberflächen eines BasePart von ColorShift_Bottom basieren auf der Position und Ausrichtung des BasePart in Bezug auf die Sonne oder den Mond. Wenn die Sonne direkt über dem BasePart steht, gilt der Farbversatz nur für die untere Oberfläche.

Dieser Effekt kann erhöht oder verringert werden, indem Lighting.Brightness geändert wird.

ColorShift_Bottom beeinflusst die entgegengesetzten Oberflächen zu Lighting.ColorShift_Top

Beachten Sie, Lighting.ColorShift_Top und ColorShift_Bottom mit den Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaften interagieren, wenn sie größer als 0, 0, 0 sind. Darüber hinaus kann die Wirkung von ColorShift_Bottom sehr

ColorShift_Top

Parallel lesen

Die Farbe, die in einem von der Sonne oder des Mondes gegenüberstehenden Material reflektiert wird.

Die Oberflächen eines BasePart von ColorShift_Top basieren auf der Position und Ausrichtung des BasePart in Bezug auf die Sonne oder den Mond. Wenn die Sonne direkt über dem BasePart steht, gilt der Farbversatz nur für die oberste Oberfläche.

Dieser Effekt kann erhöht oder verringert werden, indem Lighting.Brightness geändert wird.

Während ColorShift_Top die Oberflächen, die der Licht exponierten, beeinflusst, beeinflusst Lighting.ColorShift_Bottom die Oberflächen, die vor dem Licht geschützt sind.

Beachten Sie, dass ColorShift_Top und ColorShift_Bottom mit den Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaften interagieren, wenn sie größer als 0, 0, 0 sind.

EnvironmentDiffuseScale

Parallel lesen

Umgebungslicht, das aus der Umgebung stammt. Der Wert dieser Eigenschaft wird standardmäßig auf 0 gesetzt.

Es ist ähnlich zu Lighting.Ambient und Lighting.OutdoorAmbient-Eigenschaft, aber es ist dynamisch und kann nach Himmel und Tageszeit ändern. Es wird empfohlen, wenn diese Eigenschaft erhöht wird, Ambient und OutdoorAmbient entsprechend verringert.

Es macht auch den Himmelskasten in der Nacht sichtbar.

EnvironmentSpecularScale

Parallel lesen

Spiegelndes Licht, das aus der Umgebung stammt. Der Wert dieser Eigenschaft wird standardmäßig auf 0 gesetzt.

Es wird dafür sorgen, dass glatte Objekte die Umgebung widerspiegeln. Besonders wichtig, um Metall realistischer zu machen.

ExposureCompensation

Parallel lesen

Diese Eigenschaft bestimmt die Ausgleichssumme, die einen Bias auf die Ausgabe-Ebene der Szene vor dem Tonemap-Schritt anwendet. Standard sind 0.

  • Ein Wert von +1 zeigt doppelt so viel Exposure und -1 bedeutet halb so viel Exposure.
  • Ein Wert von 0 zeigt an, dass keine Expositionskompensation erfolgt.
  • Reichweite: -5 bis 5

Diese Eigenschaft wird replicated und kann von Skripten oder Studio festgelegt werden.


local Lighting = game:GetService("Lighting")
Lighting.ExposureCompensation = 5

Sie können diese Eigenschaft verwenden, um die Expositionsmenge vor dem Tonemap-Schritt anzupassen, um mehr Details in helleren oder dunkleren Bereichen anzuzeigen. Dies ist erforderlich, da wir zu einer HDR-Pfeife wechseln.

Wenn Lighting.Technology auf Legacy eingestellt ist, hat diese Eigenschaft keinen Effekt.


local Lighting = game:GetService("Lighting")
-- ExposureCompensation hat keinen Effekt, da die Technologie von Lighting Legacy ist
Lighting.Technology = Enum.Technology.Legacy
Lighting.ExposureCompensation = 5

FogColor

Parallel lesen

Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.

Ein Color3-Wert, der die Farbe des Lighting-Nebels gibt.

Wie funktioniert Nebel?

Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Richtung angezeigt. Es verblasst zwischen dem Lighting.FogStart -Eigenschaft, in der es nicht sichtbar ist, bis zur Lighting.FogEnd -Eigenschaft, in der es vollständig opake ist. Der Effekt von Fog ist es, seine Farbe mit der F

Bei Entfernungen größer als Lighting.FogEnd , wird die Farbe vollständig durch die FogColor bestimmt. jedoch bei Entfernungen zwischen Lighting.FogStart und Lighting.FogEnd der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.

Roblox verwendet lineare Interpolation zwischen Lighting.FogStart und Lighting.FogEnd. Dies bedeutet, wenn Lighting.FogStart 10 und 1> Class.Lighting.F


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

Beachten Sie, dass Nebel die Skybox nicht verdunkelt.

FogEnd

Parallel lesen

Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.

Die Tiefe aus der Workspace.CurrentCamera, in Studs, bei der der Nebel vollständig undurchsichtig wird.

Wie funktioniert Nebel?

Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Ansicht angezeigt. Es verblasst zwischen dem Lighting.FogStart -Eigenschaft, in der es nicht sichtbar ist, bis zur FogEnd-Eigenschaft, in der es vollständig opake ist. Der Effekt des Fog ist, dass er die Farbe mit der Class.Lighting.FogColor

Farbe wird bei Distanzen größer als FogEnd vollständig durch die Lighting.FogColor bestimmt. jedoch bei Distanzen zwischen Lighting.FogStart und FogEnd, der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.

Roblox verwendet lineare Interpolation zwischen Lighting.FogStart und FogEnd. Dies bedeutet, wenn Lighting.FogStart 10 und FogEnd sind, dass der Fog bei einer Entfernung von 15 Studs 50% ist. Dies bedeutet, dass die Farbe eines Pixels bei 15 Studs 50% ist, mit


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

Die Farbe des Nebels kann mit Lighting.FogColor angepasst werden.

Beachten Sie, dass Nebel die Skybox nicht verdunkelt.

FogStart

Parallel lesen

Fog-Eigenschaften werden ausgeblendet, wenn Lighting ein Atmosphere-Objekt enthält.

Die Tiefe aus der Workspace.CurrentCamera , in Studs, bei der der Nebel anfängt, zu anzeigen.

Wie funktioniert Nebel?

Fog in Roblox wird in einem Flugzeug perpendikular zur Workspace.CurrentCamera -Ansicht angezeigt. Es verblasst zwischen der FogStart-Eigenschaft, in der es nicht sichtbar ist, bis zur Lighting.FogEnd -Eigenschaft, in der es vollständig opake ist. Der Effekt des Fog ist, dass er die Farbe mit der Class.Lighting.FogColor

Bei Entfernungen größer als Lighting.FogEnd wird die Farbe vollständig durch die Lighting.FogColor bestimmt. jedoch bei Entfernungen zwischen FogStart und Lighting.FogEnd der Grad, in dem die Farbe gemischt wird, hängt von der Position ab.

Roblox verwendet lineare Interpolation zwischen FogStart und Lighting.FogEnd . Dies bedeutet, dass, wenn FogStart 10 ist und Lighting.FogEnd 20 ist, auf einer Entfernung von 15 Studs der Fog auf 50% ist. Dies bedeutet, dass die Farbe eines Pixels bei 15 Studs 50


local Lighting = game:GetService("Lighting")
-- fog will fade between 25 and 200 studs
Lighting.FogStart = 25
Lighting.FogEnd = 200

Die Farbe des Nebels kann mit Lighting.FogColor angepasst werden.

Beachten Sie, dass Nebel die Skybox nicht verdunkelt.

GeographicLatitude

Parallel lesen

Die geographische Lage, in Grad, des Bildes, die das Ergebnis von "Class.Lighting" auf der Position der Sonne und des Mondes beeinflusst.

Wenn die Position der Sonne berechnet wird, wird auch der Neigung der Erde Konto.

Die Änderung der GeografischenLatitude wird die Position der Sonne zu jedem Lighting.TimeOfDay ändern. Entwickler, die die Position der Sonne oder des Mondes erhalten möchten, sollten Lighting:GetSunDirection() oder Class.Lighting:GetMoonDirection() verwenden.

Code-Beispiele

Sun direction

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

Parallel lesen

Schaltet die voxelbasierte dynamische Beleuchtung im Spiel um

Was macht GlobalShadows?

Wenn auf wahr gesetzt, werden Schatten in geschützten Bereichen rend染 in Abhängigkeit von der Position der Sonne und des Mondes. Die Beleuchtungsfarbe, die auf diese Bereiche angewendet wird, wird durch die Eigenschaft Lighting.Ambient bestimmt. Die Beleuchtungsfarbe in allen anderen Bereichen wird durch die Eigenschaft Lighting.OutdoorAmbient bestimmt.

Wenn deaktiviert, werden keine Schatten gezogen und keine Unterscheidung zwischen Innen- und Außenbereichen getroffen. Ergebnisbestimmt die Eigenschaft Lighting.Ambient die Beleuchtungsfarbe und Lighting.OutdoorAmbient wird nichts tun.

Schatten werden mit einem Voxel-System berechnet, und jedes Beleuchtungs-Voxel ist 4x4x4 Studs. Dies bedeutet, dass Objekte größer sein müssen als 4x4x4 Studs, um eine realistische Schattenanzeige zu verwalten. Schatten werden auch recalculated, wenn BaseParts sich bewegen.

Beachten Sie, dass diese Eigenschaft nicht mit Schatten von Charaktern verwandt ist, die unabhängig davon global verwendet werden.

For more information about Roblox's dynamic lighting, please see this Blog-Post .

GlobalShadows umschalten

Entwickler, die die GlobalShadows-Einstellung umstellen, bemerken, dass das Deaktivieren sie den Ort deutlich dunkler macht. Dies ist, weil wenn GlobalShadows deaktiviert ist Lighting.Ambient wird verwendet, um die Beleuchtungsfarbe in beiden Innen- und Außenbereichen zu berechnen. Dieses Dunkelheit kann durch das Festlegen von

In den meisten Fällen empfehlen sich Entwickler, GlobalShadows aufgrund des visuellen Aussehenzu deaktivieren. Siehe Leitfaden für Beleuchtungseigenschaften für eine Vergleich.

Intent

Intent
Nicht skriptfähig
Parallel lesen

OutdoorAmbient

Parallel lesen

Die Beleuchtungsstimmung, die für Außenbereiche angewendet wird.

Diese Eigenschaft wird standardmäßig auf 127, 127, 127 gesetzt.

Solange die roten, grünen und blauen Kanäle von Lighting.Ambient nicht die entsprechenden Kanäle in dieser Eigenschaftenüberschreiten, wird die Helligkeit der Beleuchtung in Außen

Beachten Sie, wenn Lighting.GlobalShadows deaktiviert ist, gibt es keine Unterscheidung zwischen Bereichen, die vom Himmel verкрыt sind, und Bereichen, die nicht sind. In diesem Fall wird OutdoorAmbient ignoriert und die Farbe aus der Eigenschaft Lighting.Ambient wird überall angewendet.

Für weitere Eigenschaften, die die Farbe der Beleuchtung beeinflussen, siehe Lighting.ColorShift_Bottom und Lighting.ColorShift_Top.

Quality

Quality
Nicht skriptfähig
Parallel lesen

ShadowSoftness

Parallel lesen

Steuert, wie verschwommen die Schatten sind. Der Wert dieser Eigenschaft wird standardmäßig auf 0,2 gesetzt.

Diese Eigenschaft funktioniert nur, wenn Lighting.Technology-Modus ist ShadowMap oder Future und das Gerät in der Lage ist, ShadowMap zu unterstützen.

Technology

Roblox-Skript-Sicherheit
Parallel lesen

Bestimmt das Beleuchtungssystem für die Rendering der 3D-Welt. Nicht skriptbar und nur in Studio modifizierbar. Siehe Enum.Technology für verfügbare Optionen und Lighting Technology für detaillierte Beschreibungen und visuelle Effekte jeder Option.

TimeOfDay

Parallel lesen

Eine 24-Stunden-Zeitvertretung der aktuellen Tageszeit, die von Lighting verwendet wird.

Beachten Sie, dass diese Eigenschaft nicht mit der tatsächlichen Tageszeit übereinstimmt und während des Spiels nicht geändert wird, es sei denn, es wurde von einem Skript, das. PL: die Skriptsgeändert.

Für eine nummerische Messung von Lighting Zeitverbrauch Lighting.ClockTime . Ändern Lighting.ClockTime oder die Verwendung von 1> Class.Lighting:SetMinutesAfterMidnight()1> wird auch diese Eigenschaftengeändert.

Die Verwendung von TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local 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..":"..secs
Lighting.TimeOfDay = timeString
task.wait()
end

Die Verwendung von Lighting.ClockTime erfordert die Zeit, um normalisiert zu werden:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

Methoden

GetMinutesAfterMidnight

Parallel schreiben

Zurückgibt die Anzahl der Minuten, die nach Mitternacht für die Zwecke der Beleuchtung abgelaufen sind.

Diese Zahl wird fast identisch mit Lighting.ClockTime multipliziert, um 60.

Diese Zahl wird nicht immer der in Lighting:SetMinutesAfterMidnight() gegebenen Wert entsprechen, da sie Minuten nach Mitternacht am aktuellen Tag zurückgibt.

Für Lighting Zeitformate als Strings, siehe Lighting.TimeOfDay.


Rückgaben

Die Anzahl der Minuten nach Mitternacht.

Code-Beispiele

Lighting:GetMinutesAfterMidnight

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMinutesAfterMidnight())

GetMoonDirection

Parallel schreiben

Kehrt eine Vector3 zurück, die die Richtung des Mondes aus der Position 0, 0, 0 repräsentiert.

Beachten Sie, dass, wenn der Mond "festlegen" ist und nicht mehr sichtbar ist, die von dieser Funktion zurückgegebene Vector3 weiterhin auf den Mond unter der Karte zeigt.

Entwickler, die die Positionierung des Mondes ändern möchten, sollten die Lighting.ClockTime oder Lighting.GeographicLatitude Eigenschaften verwenden.

Eine Variante dieser Funktion existiert, um die Richtung der Sonne zu erhalten, Lighting:GetSunDirection() .


Rückgaben

Vector3 stellt die Richtung des Mondes aus der Position 0, 0, 0 dar.

Code-Beispiele

Lighting:GetMoonDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
print(Lighting:GetMoonDirection())

GetMoonPhase

Kehre die aktuelle Phase des Mondes zurück. Es gibt keine Möglichkeit, die Mondphase zu ändern, so dass dies immer 0,75 zurückgibt.


Rückgaben

GetSunDirection

Parallel schreiben

Kehrt eine Vector3 zurück, die die Richtung der Sonne aus der Position 0, 0, 0 repräsentiert.

Beachten Sie, wenn die Sonne gesetzt ist und nicht mehr sichtbar ist, wird die Vector3 , die von dieser Funktion zurückgegeben wird, weiterhin auf die Sonne unter der Karte zeigen.

Entwickler, die die Positionierung der Sonne ändern möchten, sollten die Lighting.ClockTime oder Lighting.GeographicLatitude Eigenschaften verwenden.

Eine Variante dieser Funktion existiert, um die Richtung des Mondes zu erhalten, Lighting:GetMoonDirection() .


Rückgaben

Vector3 stellt die Richtung der Sonne aus der Position 0, 0, 0 dar.

Code-Beispiele

Lighting:GetSunDirection

local Lighting = game:GetService("Lighting")
Lighting.TimeOfDay = "14:00:00"
Lighting.GeographicLatitude = 41.73
print(Lighting:GetSunDirection())

SetMinutesAfterMidnight

void

Setzt Lighting.TimeOfDay und Lighting.ClockTime auf die angegebene Anzahl von Minuten nach Mitternacht.

Wie kann ich ein Skript, das. PL: die Skriptserstellen?

SetMinutesAfterMidnight ermöglicht es, eine Zahl nach Mitternacht zu verwenden, z. B. in einem Tag/Nacht-Zyklus Script, ohne die Notwendigkeit, in eine Zeichenfolge im Format Lighting.TimeOfDay umzuwandeln. Es ermöglicht auch Werte größer als 24 Stunden, die entsprechen zu Zeiten am nächsten Tag. Siehe die Codeschnippen unten für ein Be

Die Verwendung von Lighting.TimeOfDay erfordert die Zeit, um normalisiert zu werden, und eine Strings-Formate:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local seconds = minutesNormalised * 60
local 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 .. ":" .. secs
Lighting.TimeOfDay = timeString
task.wait()
end

Die Verwendung von Lighting.ClockTime erfordert die Zeit, um normalisiert zu werden:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
local minutesNormalised = minutesAfterMidnight % (60 * 24)
local hours = minutesNormalised / 60
Lighting.ClockTime = hours
task.wait()
end

Das Verwenden von Lighting:SetMinutesAfterMidnight() benötigt keine zusätzliche Verarbeitung:


minutesAfterMidnight = 0
while true do
minutesAfterMidnight += 1
Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)
task.wait()
end

Parameter

minutes: number

Die Anzahl der Minuten nach Mitternacht.


Rückgaben

void

Code-Beispiele

Setting Lighting Time

local Lighting = game:GetService("Lighting")
Lighting:SetMinutesAfterMidnight(840)

Ereignisse

LightingChanged

Dieses Ereignis wird ausgelöst, wenn eine Lighting-Eigenschaft geändert wird oder ein Sky von Lighting entfernt oder hinzugefügt wird.

Obwohl dieses Ereignis ausgelöst wird, wenn die meisten Eigenschaften von Lighting geändert werden, sollten Entwickler sich der wenigen Ausnahmen bewusst sein:

In Fällen, in denen dieses Verhalten nicht gewünscht ist, kann das Ereignis Object.Changed oder die Funktion Object:GetPropertyChangedSignal() verwendet werden.

Parameter

skyChanged: bool

Code-Beispiele

Lighting.LightingChanged

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)