Lighting 服务控制体验中的全球照明。它包括一系列可调整的属性,您可以使用它来改变灯光的显示和与其他对象的互动方式,如在 灯光属性 中概述的。

Lighting 也可能包含一个 Atmosphere 对象来渲染真实的大气效果,包括粒子密度、雾、闪光和颜色。请参阅大气效应获取详细信息。

此外,(以及)可能包含后期处理效果,例如和。
概要
属性
用于遮蔽天空的区域的照明色调,例如室内区域。
地场景的照明强度。
用于 Lighting 的当前时间的数字表示(以小时计)。
在光中反映的色调与面向太阳或月亮的表面相反。
表示在阳光或月亮面前的表面上反射的色调。
从环境中得到的环境光。
从环境中得到的反射光。
曝光补偿值。
一个 Color3 值,给出了雾的色调 Lighting。
从 Workspace.CurrentCamera 的深度,以螺柱为单位,在那里雾将完全不透明。
从 Workspace.CurrentCamera 的深度,以螺柱为单位,在此开始显示雾。
场景的地理纬度,以度计,影响太阳和月亮的位置上的 Lighting 时间的结果。
切换到场景的基于体素的动态照明。
适用于户外区域的照明色调。
控制阴影的模糊程度。
决定了渲染 3D 世界的照明系统。不可脚本化。 .
由 Lighting 使用的 24 小时字符串表示当前时间的一天。
方法
活动
当 Lighting 属性发生变更或 Sky 从 Lighting 添加或删除时,此事件会触发。
属性
Ambient
Ambient 是应用于被天空遮蔽的区域,例如室内区域的照明色调。
Ambient 默认为 [0, 0, 0] (黑色)。只要这个属性的红、绿、蓝通道不超过相应通道在 OutdoorAmbient 中,调色将保留给被太阳/月亮遮蔽的区域
注意,当 GlobalShadows 被禁用时,天空被遮蔽的区域和未被遮蔽的区域之间没有区别。在这种情况下,OutdoorAmbient将被忽略,从Ambient属性的颜色将被应用到所有地方。
Brightness
地场景的照明强度。
更改此值会影响光源(太阳或月亮)对场场景照明的影响。请注意,Ambient 和 OutdoorAmbient 也可以用来影响地方的亮度。例如,将 设置为 将使地方显得比其默认值 (因为它更白)更亮。
ClockTime
用于 Lighting 的当前时间的数字表示(以小时计)。请注意,这个属性不会与实际时间相匹配,在游戏期间不会更改,除非它被脚本更改。
对于长度为 Lighting 时间格式为 24 小时字符串的测量,请使用 TimeOfDay。更改 TimeOfDay 或使用 SetMinutesAfterMidnight() 也会更改此属性。
ColorShift_Bottom
在光中反映的色调与面向太阳或月亮的表面相反。
受到 影响的 表面取决于对太阳或月亮位置的相对位置和方向。当太阳直接在BasePart上方时,颜色切换仅适用于底部表面。
这个效果可以通过修改 Brightness 来增加或减少。
请注意,ColorShift_Top 和 ColorShift_Bottom 将与Ambient 和 OutdoorAmbient 属性互动,如果它们大于
ColorShift_Top
表示在阳光或月亮面前的表面上反射的色调。
受到 影响的 表面取决于对太阳或月亮位置的相对位置和方向。当太阳直接在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() 方法。