Để thực hành vòng lặp for, bạn sẽ tạo một chiếc đèn mà dần dần phát sáng hơn và sau đó mờ đi theo thời gian. Kịch bản này có thể được áp dụng cho bất kỳ đèn nào khác trong một dự án, cho dù đó là đèn đường hay tinh thể phát sáng.
Thiết lập phần và kịch bản
Chiếc đèn sẽ là một phần với một ánh sáng và kịch bản gắn liền.
Để dễ dàng nhìn thấy ánh sáng, hãy thay đổi thế giới 3D thành ban đêm. Trong Explorer ⟩ Lighting, thay đổi ClockTime thành 0.

Tạo một phần hoặc mô hình mới có tên là Lamp.

Chọn Lamp, và thêm một ánh sáng, chẳng hạn như PointLight hoặc SpotLight. Bạn sẽ làm việc với thuộc tính độ sáng của ánh sáng để tạo ra một chiếc đèn phát sáng.

Trong Lamp, thêm một kịch bản mới có tên là GlowScript. Trong kịch bản đó, tạo các biến để lưu trữ phần đèn và ánh sáng điểm.
local lightPart = script.Parentlocal light = lightPart.SpotLightTiếp theo, tạo một biến để lưu trữ mức độ thay đổi độ sáng của ánh sáng mỗi khi vòng lặp chạy. Sau đó, thêm một biến khác cho số giây mà vòng lặp sẽ chờ trước khi chạy lại.
-- Mức độ thay đổi độ sáng của ánh sáng mỗi lầnlocal brightnessChange = 1-- Thời gian trong giây mà ánh sáng sẽ thay đổi độ sánglocal timeChange = 1
Làm cho đèn phát sáng
Chiếc đèn sẽ sử dụng hai vòng lặp for, một vòng đếm lên để làm cho đèn sáng hơn, và một vòng đếm xuống để làm mờ nó. Mỗi vòng lặp for sẽ có một biến điều khiển gọi là currentBrightness. Bằng cách đó, khi biến điều khiển của vòng lặp for tăng lên và giảm xuống, độ sáng của ánh sáng cũng sẽ như vậy.
Vòng lặp đầu tiên (tăng ánh sáng)
Nhớ rằng, một vòng lặp for bắt đầu với từ khóa for theo sau là một biến điều khiển. Kịch bản này sẽ đặt giá trị độ sáng của ánh sáng thành giá trị trong biến điều khiển.
Lập trình vòng lặp for sử dụng các giá trị sau. Nhớ tách biệt biến điều khiển và giá trị kết thúc bằng dấu phẩy.
- Biến điều khiển: currentBrightness
- Giá trị bắt đầu: 0
- Giá trị kết thúc: 5
- Giá trị tăng: brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendTrong phạm vi của vòng lặp for, đặt thuộc tính độ sáng của ánh sáng thành giá trị trong biến điều khiển bằng cách gõ light.Brightness = currentBrightness. Bây giờ, khi vòng lặp chạy, ánh sáng sẽ trở nên sáng hơn.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendĐể sự thay đổi không xảy ra ngay lập tức, thêm một hàm chờ sử dụng giá trị trong timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endChạy trò chơi để xem ánh sáng tăng độ sáng mỗi giây.
Nếu bạn không thể thấy sự thay đổi độ sáng theo thời gian trong vòng lặp đầu tiên:
- Đảm bảo rằng light.Brightness = currentBrightness nằm giữa do và end của vòng lặp for của bạn.
- Kiểm tra rằng timeChange ít nhất là 1 hoặc cao hơn. Các số nhỏ hơn sẽ làm cho độ sáng thay đổi nhanh hơn, nhưng khó thấy hơn theo thời gian.
- Đảm bảo rằng dòng đầu tiên của vòng lặp for của bạn có tổng cộng hai dấu phẩy tách biệt biến điều khiển, giá trị kết thúc và giá trị tăng.
Vòng lặp thứ hai (giảm ánh sáng)
Để làm mờ ánh sáng, sử dụng một vòng lặp for thứ hai. Các giá trị của vòng lặp này sẽ được đảo ngược để ánh sáng bắt đầu sáng và mỗi giây, trở nên mờ hơn.
Lập trình một vòng lặp for thứ hai giảm độ sáng theo thời gian. Giải pháp nằm trong khối mã dưới đây. Sử dụng các giá trị sau:
- Biến điều khiển - currentBrightness đặt thành 5, kết thúc của vòng lặp trước.
- Kết thúc - 0, tắt ánh sáng.
- Giá trị giảm - trừ brightnessChange.
-- Vòng lặp thứ hai làm mờ đènfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endChạy trò chơi của bạn; bạn sẽ thấy ánh sáng sáng lên và sau đó mờ đi.
Làm cho ánh sáng lặp lại
Hiện tại, ánh sáng chỉ bật và tắt một lần. Để làm cho chiếc đèn liên tục phát sáng và tắt, các vòng lặp for sẽ được đặt bên trong một vòng lặp while lặp lại.
Dưới các vòng lặp for, tạo một vòng lặp while mới.
while true doendĐặt cả hai vòng lặp for bên trong một vòng lặp while. Thụt lề các vòng lặp for để dễ dàng phân biệt chúng với vòng lặp while.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendChạy trò chơi để xem ánh sáng liên tục sáng và mờ.
Kịch bản ánh sáng hoàn chỉnh
Một phiên bản hoàn chỉnh của kịch bản có thể được tham khảo dưới đây.
-- Lưu trữ ánh sáng gắn liền với chiếc đèn này
lightPart = script.Parent
light = lightPart.SpotLight
-- Mức độ thay đổi độ sáng của ánh sáng mỗi lần
local brightnessChange = 1
-- Thời gian trong giây mà ánh sáng sẽ thay đổi độ sáng
local timeChange = 0.2
while true do
for count = 0, 5, brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
-- Vòng lặp thứ hai để tắt ánh sáng
for count = 5, 0, -brightnessChange do
light.Brightness = count
task.wait(timeChange)
end
endTóm tắt
Để tạo ra các hiệu ứng phức tạp trong một dự án, các kịch bản có thể sử dụng nhiều vòng lặp, và thậm chí là sự kết hợp của các loại vòng lặp khác nhau. Để lập trình một ánh sáng phát sáng, hai vòng lặp được lồng vào trong một vòng lặp while. Khi các lập trình viên thêm nhiều vòng lặp hơn, hãy chắc chắn kiểm tra thụt lề để mã có thể dễ đọc.