為了練習 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 迴圈內。隨著編碼者添加更多的迴圈,請務必檢查縮進,以便代碼易於閱讀。