服務 Lighting 控制體驗中的全球照明。它包括一系列可調整的屬性,您可以使用它來變更照明的外觀和與其他對象的互動方式,如在 照明屬性 中總結的。

Lighting 也可能包含一個 Atmosphere 對象來渲染實際的大氣效果,包括粒子密度、霧、閃光和顏色。見 大氣效應 了解詳情。

此外, Lighting (以及 Workspace.CurrentCamera) 可能包含 後期處理效果 ,例如 SunRaysEffect 和 BlurEffect .
概要
屬性
適用於被天空遮蓋的區域,例如室內區域的照明顏色。
場空間的照明強度。
數值代表(以小時表示)當前由 Lighting 使用的時間。
在光中反映的色彩與正面對著太陽或月亮的表面相反。
表示在陽光或月亮面前的表面上反射的顏色。
從環境中得到的環境光。
從環境中得到的反射光。
暴露補償值。
一個 值提供了霧的色調。
從 Workspace.CurrentCamera 的深度,以厘米為單位,在那裡霧將完全不透明。
從 Workspace.CurrentCamera 的深度,以厘米為單位,在此開始顯示霧。
場景的地理緯度,以度計,對太陽和月亮的位置影響 Lighting 時間的結果。
切換到場空間的 voxel 基動燈光。
應用於戶外區域的照明顏色。
控制陰影模糊的程度。
決定渲染 3D 世界的照明系統。不可腳本化。 .
由 Lighting 使用的 24 小時字串代表當前時間的表示。
方法
活動
當 Lighting 屬性被變更或 Sky 從 Lighting 移除或添加時,此事件會發生。
屬性
Ambient
Ambient 是適用於被天空遮蓋的區域,例如室內區域的照明顏色。
Ambient 預設為 [0, 0, 0] (黑色)。只要這個屬性的紅、綠、藍通道不超過對應通道在 OutdoorAmbient 中,顏色變更將用於遮蓋太陽/月亮的區域。
注意,當 GlobalShadows 被禁用時,從天空遮蓋的區域和未遮蓋的區域之間沒有區別。在這種情況下,OutdoorAmbient將被忽略,從Ambient屬性的顏色將在所有地方應用。
Brightness
場空間的照明強度。
變更此值會影響光源(太陽或月亮)對場空間的照明影響。請注意,Ambient和OutdoorAmbient也可以用來影響地方的亮度。例如,將 設置為 將使地方看起來比預設值 更亮(因為它更白)。
ClockTime
數值代表(以小時表示)當前由 Lighting 使用的時間。請注意,此屬性不會與實際時間相對應,在遊戲期間不會更改,除非它被腳指令碼更改。
對於格式為 Lighting 時間的測量,使用 TimeOfDay 。變更 TimeOfDay 或使用 SetMinutesAfterMidnight() 也會更改此屬性。
ColorShift_Bottom
在光中反映的色彩與正面對著太陽或月亮的表面相反。
受到 BasePart 影響的 ColorShift_Bottom 表面取決於太陽或月亮位置相對於 BasePart 的位置和方向。當太陽直接在BasePart上方時,顏色切換只適用於底部表面。
這個效果可以通過修改 Brightness 來增加或減少。
請注意,ColorShift_Top 和 ColorShift_Bottom 將與 Ambient 和 OutdoorAmbient 屬性互動,如果它們大於
ColorShift_Top
表示在陽光或月亮面前的表面上反射的顏色。
受到 BasePart 影響的 ColorShift_Top 表面取決於太陽或月亮位置相對於 BasePart 的位置和方向。當太陽直接在BasePart上方時,顏色切換只適用於最上層。
這個效果可以通過修改 Brightness 來增加或減少。
請注意,ColorShift_Top 和 ColorShift_Bottom 將與 Ambient 和 OutdoorAmbient 屬性互動,如果它們大於
EnvironmentDiffuseScale
環境中的環境光,默認值為 0 。這個屬性與 Ambient 和 OutdoorAmbient 相似,但是它是動態的,可以根據天空和時間變化。當此屬性增加時,建議減少 Ambient 和 OutdoorAmbient 相應地減少。
ExposureCompensation
此屬性決定了曝光補償量,會對場景的曝光等級在調色圖步驟之前進行偏移。預設為 0 (無曝光補償),範圍為 -5 到 5 。值 1 表示兩倍的暴露量,值 -1 表示一半的暴露量。
GeographicLatitude
場景的地理緯度,以度計,對太陽和月亮的位置影響 Lighting 時間的結果。當計算太陽的位置時,地球的傾斜也會被考帳號。
變更 GeographicLatitude 將在每次 TimeOfDay 改變太陽的位置。如果您想獲得太陽或月亮的位置,請使用 GetSunDirection() 或 GetMoonDirection() 。
GlobalShadows
在空間方切換基於體素的動態燈光。當設為 true 時,陰影會在太陽和月亮位置的保護區中渲染。對這些受保護區域的照明顏色由 Ambient 屬性決定,而對所有其他區域的照明顏色由 OutdoorAmbient 屬性決定。
當 false 時,陰影不會被繪製,並且室內和室外區域之間沒有區分。因結果,Ambient屬性決定了照明顏色,而OutdoorAmbient將不做任何操作。
陰影使用沃克斯系統計算,每個照明沃克斯是 4×4×4 格。這意味著物件必須比 4×4×4 格大才能顯示出現實的陰影。陰影也會在 BaseParts 移動時重新計算。
LightingStyle
OutdoorAmbient
OutdoorAmbient 是應用於戶外區域的照明顏色。
OutdoorAmbient 預設為 [127, 127, 127] 。只要 Ambient 的紅、綠、藍通道不超過對應通道在 OutdoorAmbient 中,戶外區域的燈光顏色就會由此屬性決定。
有效的 OutdoorAmbient 值被限制為大於或等於 Ambient 在所有通道上,這意味著如果一個通道的 Ambient 超過相應的 OutdoorAmbient 頻道,顏色的 Ambient 將開始適用於戶外區域。
注意,當 GlobalShadows 被禁用時,從天空遮蓋的區域和未遮蓋的區域之間沒有區別。在這種情況下,OutdoorAmbient將被忽略,從Ambient屬性的顏色將在所有地方應用。
PrioritizeLightingQuality
TimeOfDay
由 Lighting 使用的 24 小時字串代表當前時間的表示。請注意,此屬性不會與實際時間相對應,在遊戲期間不會更改,除非它被腳指令碼更改。
對於數字測量的 Lighting 時間,使用 ClockTime 。變更 ClockTime 或使用 SetMinutesAfterMidnight() 也會更改此屬性。
方法
GetMinutesAfterMidnight
返回在午夜後通過的分鐘數,用於點亮。這個數字將與 ClockTime 乘以 60 幾乎相同。
請注意,此數字不一定會等於在 SetMinutesAfterMidnight() 中提供的值,因為它會在當前日期的午夜後返回分鐘。
返回
午夜後的分鐘數。
GetMoonDirection
返回一個 Vector3 代表月亮方向從位置
GetSunDirection() 是取得太陽方向的變體方法。
返回
GetSunDirection
返回一個 Vector3 代表太陽方向從位置
GetMoonDirection() 是取得月亮方向的變體方法。
返回
SetMinutesAfterMidnight
將 TimeOfDay 和 ClockTime 設置為午夜後指定的分鐘數。
這個方法允許使用數字值,例如在一天/夜週期 Script 中,而無需轉換為 TimeOfDay 所需的格式。它也允許提供超過 24 小時的值,對應於下一天的時間。
以下代碼示例包含簡單的日/夜周期指令碼。使用 TIME_SPEED 和 START_TIME 參數可以更改時間速度和初始時間。
local Lighting = game:GetService("Lighting")local TIME_SPEED = 60 -- 1 分 = 1 小時local START_TIME = 9 -- 9 AMlocal minutesAfterMidnight = START_TIME * 60local waitTime = 60 / TIME_SPEEDwhile true dominutesAfterMidnight = minutesAfterMidnight + 1Lighting:SetMinutesAfterMidnight(minutesAfterMidnight)task.wait(waitTime)end
參數
午夜後的分鐘數。
返回
活動
LightingChanged
當 Lighting 屬性發生變更或 Sky 從 Lighting 移除或添加時,此事件會發生,但有一些例外:
- 變更 GlobalShadows 將不會發射此事件。
在這種行為不需要的情況下,可以使用 Object.Changed 事件或 Object:GetPropertyChangedSignal() 方法。