带有循环的发光灯

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

要练习循环,你会创建一个灯,它会逐渐变亮,然后随着时间的推移会变暗。然后,该脚本可以应用到项目中的任何其他灯光,无论是街灯还是发光水晶。

设置零件和脚本

灯将是带有灯光和脚本的一部分。

  1. 为了更容易看到灯光,将游戏世界改为 夜晚时间 。在 Explorer > 照明 > 更改 时间钟 为 0。

    image
  2. 创建一个名为灯的新部件或模型。

  3. 选择灯,并添加 ,例如点光源或聚光灯。你将使用灯光的亮度属性来创建发光灯。

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


    local lightPart = script.Parent
    local light = lightPart.SpotLight
  5. 接下来,创建一个变量来保存灯光亮度每次循环运行时会发生多大变化。然后,添加另一个变量,告诉循环在何时需要等待多少秒才能再次运行。


    -- 光的亮度每次会改变多少
    local brightnessChange = 1
    -- 光在几秒内多久会改变亮度
    local timeChange = 1

使灯光亮起

灯将使用两个 循环 , 一个用于使灯更亮, 另一个用于使灯变暗。每个循环都会有一个控制变量叫做当前亮度。这样,当循环控制变量上下移动时,灯光的亮度也会上下移动。

第一循环(光增加)

请记住,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 循环的开始和结束之间。
  • 检查 timeChange 至少为 1 或更高。较小的数字会使亮度更快变化,但随着时间推移会更难看到。
  • 确保你的 for 循环的第一行有两个总分号来分开控制变量、终端值和增量值。

第二循环(光降低)

要降低光亮度,请使用第二循环。该循环的值将被反转,使光亮度开始增加,每秒钟变暗。

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

    • 控制变量 - currentBrightness 设置为 5,最后循环的结束
    • 结束 - 0,关闭灯光。
    • 增量 - 减去 brightnessChange

    -- 第二循环淡化灯
    for currentBrightness = 5, 0, -brightnessChange do
    light.Brightness = currentBrightness
    task.wait(timeChange)
    end
  2. 运行您的游戏;您应该看到灯光变亮,然后变暗。

使光重复

现在,灯光只能打开和关闭一次。要使灯始终亮起并熄灭,循环将放置在重复而循环中。

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


    while true do
    end
  2. 将两个循环放在 while 循环内。indent 循环以便它们更容易与 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 循环中。当编程师添加更多循环时,请确保检查引用符,以便代码易于已读。