Aby ćwiczyć pętle for, stworzysz lampę, która stopniowo jaśnieje, a następnie przygasa w czasie. Ten skrypt można następnie zastosować do innych świateł w projekcie, niezależnie od tego, czy jest to latarnia, czy świecący kryształ.
Ustaw część i skrypt
Lampa będzie częścią z dołączonym światłem i skryptem.
Aby ułatwić widoczność światła, zmień świat 3D na noc. W Explorer ⟩ Lighting zmień ClockTime na 0.

Stwórz nową część lub model nazwany Lampa.

Wybierz Lampę i dodaj światło, takie jak PointLight lub SpotLight. Będziesz pracować z właściwością jasności światła, aby stworzyć świecącą lampę.

W Lampie dodaj nowy skrypt o nazwie GlowScript. W tym skrypcie utwórz zmienne do przechowywania części lampy i światła punktowego.
local lightPart = script.Parentlocal light = lightPart.SpotLightNastępnie utwórz zmienną, aby przechować, o ile zmieni się jasność światła za każdym razem, gdy pętla zostanie uruchomiona. Następnie dodaj inną zmienną dotycząca tego, jak wiele sekund pętle będą czekały przed kolejnym uruchomieniem.
-- Jak bardzo zmieni się jasność światła za każdym razemlocal brightnessChange = 1-- Jak często w sekundach światło zmieni jasnośćlocal timeChange = 1
Spraw, aby lampa świeciła
Lampa będzie używać dwóch pętli for, jedna, która liczy w górę, aby zwiększyć jasność lampy, i jedna, która liczy w dół, aby ją przygasić. Każda pętla for będzie miała zmienną kontrolną o nazwie currentBrightness. Dzięki temu, gdy zmienna kontrolna pętli for rośnie i maleje, również jasność światła będzie się zmieniać.
Pierwsza pętla (zwiększenie światła)
Pamiętaj, że pętla for zaczyna się od słowa kluczowego for, po którym następuje zmienna kontrolna. Ten skrypt ustawi wartość jasności światła na wartość w zmiennej kontrolnej.
Zapisz pętlę for używając poniższych wartości. Pamiętaj, aby oddzielić zmienną kontrolną i wartości końcowe przecinkiem.
- Zmienna kontrolna: currentBrightness
- Wartość początkowa: 0
- Wartość końcowa: 5
- Wartość inkrementacji: brightnessChange
local timeChange = 1for currentBrightness = 0, 5, brightnessChange doendW obrębie pętli for, ustaw właściwość jasności światła na wartość w zmiennej kontrolnej, wpisując light.Brightness = currentBrightness. Teraz, gdy pętla zostanie uruchomiona, światło stanie się jaśniejsze.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnessendAby zmiana nie działo się jednocześnie, dodaj funkcję wait używając wartości w timeChange.
for currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endUruchom doświadczenie, aby zobaczyć, jak światło zwiększa jasność co sekundę.
Jeśli nie możesz zobaczyć zmiany jasności w czasie w pierwszej pętli:
- Upewnij się, że light.Brightness = currentBrightness znajduje się pomiędzy do i end w Twojej pętli for.
- Sprawdź, czy timeChange jest co najmniej 1 lub wyższe. Mniejsze liczby sprawią, że zmiana jasności będzie szybsza, ale trudniejsza do zauważenia w czasie.
- Upewnij się, że pierwsza linia Twojej pętli for ma łącznie dwa przecinki oddzielające zmienną kontrolną, wartość końcową i wartość inkrementacji.
Druga pętla (zmniejszenie światła)
Aby przygasić światło, użyj drugiej pętli for. Wartości tej pętli będą odwrócone, aby światło zaczynało jasno, a z każdą sekundą stawało się ciemniejsze.
Zapisz drugą pętlę for, która zmniejsza jasność w czasie. Rozwiązanie znajduje się w poniższym bloku kodu. Użyj poniższych wartości:
- Zmienna kontrolna - currentBrightness ustawiona na 5, koniec ostatniej pętli.
- Koniec - 0, wyłączając światło.
- Inkrement - odejmij brightnessChange.
-- Druga pętla przygasa lampęfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endUruchom swoje doświadczenie; powinieneś zobaczyć, jak światło jaśnieje, a następnie przygasa.
Spraw, aby światło powtarzało się
Obecnie światło tylko raz się włącza i wyłącza. Aby lampa ciągle świeciła i gasła, pętle for zostaną umieszczone w powtarzającej się pętli while.
Pod pętlami for, stwórz nową pętlę while.
while true doendUmieść obie pętle for wewnątrz pętli while. Wciśnij pętle for, aby łatwiej je rozróżnić od pętli while.
while true dofor currentBrightness = 0, 5, brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endfor currentBrightness = 5, 0, -brightnessChange dolight.Brightness = currentBrightnesstask.wait(timeChange)endendUruchom doświadczenie, aby zobaczyć, jak światło ciągle jaśnieje i przygasa.
Gotowy skrypt światła
Zakończona wersja skryptu może być referencjonowana poniżej.
-- Przechowuje światło dołączone do tej lampylightPart = script.Parentlight = lightPart.SpotLight-- Jak bardzo zmieni się jasność światła za każdym razemlocal brightnessChange = 1-- Jak często w sekundach światło zmieni jasnośćlocal timeChange = 0.2while true dofor count = 0, 5, brightnessChange dolight.Brightness = counttask.wait(timeChange)end-- Druga pętla, aby wyłączyć światłofor count = 5, 0, -brightnessChange dolight.Brightness = counttask.wait(timeChange)endend
Podsumowanie
Aby stworzyć złożone efekty w projekcie, skrypty mogą używać wielu pętli, a nawet kombinacji różnych typów pętli. Aby zakodować świecące światło, dwie pętle są zagnieżdżone w pętli while. Gdy programiści dodają więcej pętli, należy upewnić się, że wcięcia są poprawne, aby kod był łatwy do przeczytania.