Tablice można łączyć z pętlami, takimi jak while czy for, aby powtarzać ten sam kod dla każdej indeksowanej wartości. Na przykład, teleportując każdego gracza z tablicy do nowego miejsca lub sprawiając, że tablica części zapali się.
Aby zbadać, jak iterować przez tablice, stwórz znikający most, w którym części są umieszczane w tablicy i następnie znikają jedna po drugiej.
Iteracja przez tablicę
Do projektu znajdź lub stwórz zestaw trzech części, które mają zniknąć. Części muszą być wszystkie zakotwiczone.
Stwórz trzy części. Nazwij części w kolejności, w jakiej mają zniknąć: Part1, Part2, Part3.
W ServerScriptService wstaw nowy skrypt i stwórz tablicę do przechowywania części.
local pathArray = {}W jednej linii wpisz nazwę części w kolejności, w jakiej mają zniknąć. Użycie nowej linii dla każdej wartości ułatwia odczyt.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Użyj pętli for z tablicą
Użyj pętli for, aby przejść przez tablicę i kontrolować, jak szybko części mają znikać w kolejności, w jakiej są indeksowane w tablicy.
Aby kontrolować, jak często część znika w sekundach, stwórz zmienną o nazwie VANISH_RATE. Na potrzeby testowania najlepiej trzymać ją na małej wartości.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Stwórz pętlę for z następującymi parametrami: Start: partIndex = 1, indeks pierwszej wartości w tablicy. Koniec: #pathArray, rozmiar tej tablicy.
for partIndex = 1, #pathArray doendAby było opóźnienie przed zniknięciem części, w pętli dodaj task.wait() używając VANISH_RATE.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endAby sprawić, że część zniknie, stwórz nową zmienną o nazwie whichPart i ustaw ją równą partsArray[partIndex]. Następnie, aby ta część zniknęła, ustaw jej właściwość CanCollide na false i Transparency na 1.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endSprawdź, czy części ścieżki znikają w czasie.
Wskazówki dotyczące rozwiązywania problemów
Jeśli most nie znika, sprawdź poniższe możliwe problemy:
Problem: Części znikają zbyt szybko lub są wszystkie niewidoczne na początku.
- W zależności od tego, jak szybko postać ładuje się do doświadczenia, pierwsze części mogą już być niewidoczne. Aby to naprawić, dodaj małe oczekiwanie, takie jak task.wait(2), na początku skryptu.
Zakoduj drugą pętlę
W tej chwili części znikają na zawsze. Aby sprawić, że znowu się pojawią, stwórz drugą pętlę for, która przejdzie przez każdą część i natychmiast sprawi, że każda będzie przechodnia.
Po pierwszej pętli dodaj task.wait(), aby stworzyć krótkie opóźnienie przed ponownym pojawieniem się ścieżki.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Na własną rękę, spróbuj zakodować drugą pętlę for, która sprawi, że ścieżka znów będzie użyteczna, zmieniając właściwość CanCollide każdej części na true i Transparency na 0. Po zakończeniu sprawdź swoją pracę w porównaniu z poniższym kodem.
-- Resetuj ścieżkę, czyniąc wszystkie części znów przechodniefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endPrzetestuj projekt, aby potwierdzić, że po zniknięciu wszystkich części, wracają.
Powtórz z pętlą while
Części znikają i ponownie się pojawiają, ale tylko raz. Aby kod ciągle się powtarzał, zagniezdź cały kod wewnątrz pętli while.
Na końcu skryptu stwórz nową pętlę while true do. Następnie przenieś obie pętle for do pętli while.
while true do-- Spraw, aby część zniknęła z tablicy w kolejnościfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj sekundę, zanim sprawisz, że ścieżka się pojawitask.wait(1)-- Resetuj ścieżkę, czyniąc wszystkie części znów przechodniefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendSprawdź, czy po zniknięciu wszystkich części, pojawiają się z powrotem.
Gotową wersję projektu można pobrać.
Zakończony skryptlocal VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Spraw, aby część zniknęła z tablicy w kolejnościfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj sekundę, zanim sprawisz, że ścieżka się pojawitask.wait(1.0)-- Resetuj ścieżkę, czyniąc wszystkie części znów przechodniefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Tablice i ipairs()
ipairs() jest używane z tablicami. "i" w ipairs() oznacza "indeks". ipairs() można użyć do szybkiego powtarzania operacji na wielu obiektach, na przykład na folderze pełnym części.
To będzie demonstrowane przez szybkie dodanie cząsteczek do całego folderu części.
W Workspace stwórz folder o nazwie PartsFolder. Dodaj tyle części, ile chcesz.
W ServerScriptService stwórz nowy skrypt i odwołaj się do folderu.
Użyj GetChildren(), aby automatycznie uzyskać tablicę z listą wszystkich obiektów w folderze.
local partsFolder = workspace.PartsFolder-- Uzyskuje tablicę z listą części w PartsFolderlocal partsArray = partsFolder:GetChildren()Użyj in ipairs(ArrayToUse) z pętlą for, aby przejść przez partsArray i dodać cząsteczki.
Zakończony skrypt-- Uzyskuje tablicę z listą części w PartsFolderlocal partsArray = partsFolder:GetChildren()-- Dodaje cząsteczki do każdej części w tablicyfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Testuj i obserwuj, jak cząsteczki unoszą się z każdej części w folderze.
Podsumowanie
Pętle można łączyć z tablicami, aby szybko pracować z dowolną liczbą wartości. Jeśli chcesz mieć dokładną kontrolę nad tym, co się dzieje z kilkoma częściami i w jakiej kolejności, tablica musi być wprowadzona ręcznie ze specyficznymi wartościami.
Aby pracować z wieloma częściami, gdzie kolejność nie ma znaczenia, GetChildren() może stworzyć tablicę dzieci obiektu. Wykorzystując ipairs(), można szybko iterować po liście, nie znając rozmiaru tablicy.