使用 for 循环的发光灯

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

为了练习 for 循环,您将创建一个灯,它会随着时间的推移逐渐变亮,然后变暗。这个脚本可以应用于项目中的任何其他灯光,无论是路灯还是发光水晶。

设置部件和脚本

灯将是一个带有附加光源和脚本的部件。

  1. 为了更容易看到光源,将 3D 世界更改为 夜间。在 ExplorerLighting 中,将 ClockTime 更改为 0

    图像
  2. 创建一个名为 Lamp 的新部件或模型。

  3. 选择 Lamp,并添加一个 光源,例如 PointLight 或 SpotLight。您将使用光源的亮度属性来创建一个发光的灯。

  4. 在 Lamp 中,添加一个名为 GlowScript 的新脚本。在该脚本中,创建变量以存储灯部件和点光源。

    local lightPart = script.Parent
    local light = lightPart.SpotLight
  5. 接下来,创建一个变量来保存每次循环运行时光源亮度的变化量。然后,再添加一个变量来表示循环在再次运行之前将等待多少秒。

    -- 每次光源亮度变化的量
    local brightnessChange = 1
    -- 光源变化亮度的时间间隔(秒)
    local timeChange = 1

让灯发光

灯将使用两个 for 循环,一个用于增加灯的亮度,另一个用于降低亮度。每个 for 循环将有一个控制变量,称为 currentBrightness。这样,当 for 循环的控制变量上下变化时,光源的亮度也会随之变化。

第一个循环(光亮增加)

请记住,for 循环以关键字 for 开头,后跟一个控制变量。此脚本将光源的亮度值设置为控制变量中的值。

  1. 使用以下值编写 for 循环代码。记得用逗号分隔控制变量和结束值。

    • 控制变量currentBrightness
    • 起始值:0
    • 结束值:5
    • 增量值brightnessChange
    local timeChange = 1
    for currentBrightness = 0, 5, brightnessChange do
    end
  2. 在 for 循环的范围内,通过输入 light.Brightness = currentBrightness 将光源的亮度属性设置为控制变量中的值。现在,当循环运行时,光源将变得更亮。

    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    end
  3. 为了使变化不会一次性发生,使用 timeChange 中的值添加一个等待函数。

    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  4. 运行游戏,查看光源每秒亮度增加。

如果您在第一个循环中看不到亮度随时间变化:

  • 确保 light.Brightness = currentBrightness 在您的 for 循环的 do 和 end 之间。
  • 检查 timeChange 至少为 1 或更高。较小的数字会使亮度变化更快,但在时间上更难以察觉。
  • 确保 for 循环的第一行有两个逗号,分别分隔控制变量、结束值和增量值。

第二个循环(光亮降低)

要使光源变暗,请使用第二个 for 循环。此循环的值将被反转,因此光源开始时亮,每秒变得更暗。

  1. 编写一个第二个 for 循环,以随时间降低亮度。解决方案在下面的代码框中。使用以下值:

    • 控制变量 - currentBrightness 设置为 5,即上一个循环的结束值。
    • 结束 - 0,关闭光源。
    • 增量 - 减去 brightnessChange
    -- 第二个循环使灯变暗
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  2. 运行您的游戏;您应该看到光源变亮然后变暗。

让光源重复

现在,光源只会开关一次。为了让灯持续发光和熄灭,for 循环将放置在一个重复的 while 循环中。

  1. 在 for 循环下方,创建一个新的 while 循环。

    while true do
    end
  2. 将两个 for 循环放入 while 循环中。缩进 for 循环,以便更容易区分它们与 while 循环。

    while true do
    for currentBrightness = 0, 5, brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
    end
  3. 运行游戏,查看光源持续变亮和变暗。

完成的灯光脚本

下面可以参考脚本的完成版本。

-- 存储附加到此灯的光源
lightPart = script.Parent
light = lightPart.SpotLight
-- 每次光源亮度变化的量
local brightnessChange = 1
-- 光源变化亮度的时间间隔(秒)
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- 第二个循环关闭光源
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
end

总结

要在项目中创建复杂效果,脚本可以使用多个循环,甚至不同类型循环的组合。要编写一个发光的灯,两个循环嵌套在一个 while 循环中。当编码者添加更多循环时,请确保检查缩进,以便代码易于阅读。

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。