为了练习 for 循环,您将创建一个灯,它会随着时间的推移逐渐变亮,然后变暗。这个脚本可以应用于项目中的任何其他灯光,无论是路灯还是发光水晶。
设置部件和脚本
灯将是一个带有附加光源和脚本的部件。
为了更容易看到光源,将 3D 世界更改为 夜间。在 Explorer ⟩ Lighting 中,将 ClockTime 更改为 0。

创建一个名为 Lamp 的新部件或模型。

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

在 Lamp 中,添加一个名为 GlowScript 的新脚本。在该脚本中,创建变量以存储灯部件和点光源。
local lightPart = script.Parentlocal light = lightPart.SpotLight接下来,创建一个变量来保存每次循环运行时光源亮度的变化量。然后,再添加一个变量来表示循环在再次运行之前将等待多少秒。
-- 每次光源亮度变化的量local brightnessChange = 1-- 光源变化亮度的时间间隔(秒)local timeChange = 1
让灯发光
灯将使用两个 for 循环,一个用于增加灯的亮度,另一个用于降低亮度。每个 for 循环将有一个控制变量,称为 currentBrightness。这样,当 for 循环的控制变量上下变化时,光源的亮度也会随之变化。
第一个循环(光亮增加)
请记住,for 循环以关键字 for 开头,后跟一个控制变量。此脚本将光源的亮度值设置为控制变量中的值。
使用以下值编写 for 循环代码。记得用逗号分隔控制变量和结束值。
- 控制变量:currentBrightness
- 起始值:0
- 结束值:5
- 增量值:brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doend在 for 循环的范围内,通过输入 light.Brightness = currentBrightness 将光源的亮度属性设置为控制变量中的值。现在,当循环运行时,光源将变得更亮。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessend为了使变化不会一次性发生,使用 timeChange 中的值添加一个等待函数。
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end运行游戏,查看光源每秒亮度增加。
如果您在第一个循环中看不到亮度随时间变化:
- 确保 light.Brightness = currentBrightness 在您的 for 循环的 do 和 end 之间。
- 检查 timeChange 至少为 1 或更高。较小的数字会使亮度变化更快,但在时间上更难以察觉。
- 确保 for 循环的第一行有两个逗号,分别分隔控制变量、结束值和增量值。
第二个循环(光亮降低)
要使光源变暗,请使用第二个 for 循环。此循环的值将被反转,因此光源开始时亮,每秒变得更暗。
编写一个第二个 for 循环,以随时间降低亮度。解决方案在下面的代码框中。使用以下值:
- 控制变量 - currentBrightness 设置为 5,即上一个循环的结束值。
- 结束 - 0,关闭光源。
- 增量 - 减去 brightnessChange。
-- 第二个循环使灯变暗for currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)end运行您的游戏;您应该看到光源变亮然后变暗。
让光源重复
现在,光源只会开关一次。为了让灯持续发光和熄灭,for 循环将放置在一个重复的 while 循环中。
在 for 循环下方,创建一个新的 while 循环。
while true doend将两个 for 循环放入 while 循环中。缩进 for 循环,以便更容易区分它们与 while 循环。
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endend运行游戏,查看光源持续变亮和变暗。
完成的灯光脚本
下面可以参考脚本的完成版本。
-- 存储附加到此灯的光源
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 循环中。当编码者添加更多循环时,请确保检查缩进,以便代码易于阅读。