為了練習 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.Parentlight = lightPart.SpotLight-- 每次燈的亮度將改變多少local brightnessChange = 1-- 燈每次改變亮度的秒數local timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- 第二個迴圈關閉燈光for count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
總結
要在項目中創建複雜的效果,腳本可以使用多個迴圈,甚至不同類型迴圈的組合。要編寫一個發光燈,兩個迴圈被嵌套在一個 while 迴圈內。隨著編碼者添加更多的迴圈,請務必檢查縮排,以便使代碼易於閱讀。