Tablice mogą być łączone z pętlami, takimi jak while i for, aby powtarzać ten sam kod dla każdej wartości indeksowanej. Na przykład, teleportowanie każdego gracza w tablicy do nowego miejsca lub sprawienie, aby tablica części zapaliła się.
Aby zbadać pętle przez tablice, stwórz znikający most, w którym części są umieszczane w tablicy, a następnie sprawiane, aby znikały jedna po drugiej.
Przechodzenie 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 = {}Wpisz na jednej linii nazwę części w kolejności, w jakiej mają zniknąć. Użycie nowej linii dla każdej wartości ułatwia czytanie.
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 powinny 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. Dla testów najlepiej jest ustawić ją na małą liczbę.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Stwórz pętlę for z następującymi: Początek: partIndex = 1, indeks pierwszej wartości w tablicy. Koniec: #pathArray, rozmiar tej tablicy.
for partIndex = 1, #pathArray doendAby był 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ą na partsArray[partIndex]. Następnie, aby sprawić, że ta część zniknie, 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 wszystkie znikają na początku.
- W zależności od tego, jak szybko twój charakter ładuje się do gry, pierwsze części mogą być już niewidoczne. Aby to naprawić, dodaj małe opóźnienie, takie jak task.wait(2), na początku skryptu.
Zapisz drugą pętlę
Obecnie 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 część będzie przejezdna.
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 napisać drugą pętlę for, która sprawi, że ścieżka będzie znowu 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 do poniższego kodu.
-- Resetuj ścieżkę, sprawiając, że wszystkie części będą znowu przejezdnefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endPrzetestuj projekt, aby potwierdzić, że po zniknięciu wszystkich części, one wracają.
Powtarzaj z pętlą while
Części znikają i pojawiają się, ale tylko raz. Aby sprawić, że kod będzie się powtarzał, zagnieżdź cały kod w 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ęść znikała z tablicy w kolejnościfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj sekundę przed ponownym pojawieniem się ścieżkitask.wait(1)-- Resetuj ścieżkę, sprawiając, że wszystkie części będą znowu przejezdnefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendSprawdź, czy po zniknięciu wszystkich części, one się pojawiają.
Zakończoną wersję projektu można pobrać.
local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Spraw, aby część znikała z tablicy w kolejności
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Poczekaj sekundę przed ponownym pojawieniem się ścieżki
task.wait(1.0)
-- Resetuj ścieżkę, sprawiając, że wszystkie części będą znowu przejezdne
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
endTablice 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 zostanie zademonstrowane przez szybkie dodawanie 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ę zawierającą wszystkie obiekty w folderze.
local partsFolder = workspace.PartsFolder-- Uzyskuje tablicę zawierającą 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ę zawierającą 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
Przetestuj grę i obserwuj, jak cząsteczki unoszą się z każdej części w folderze.
Podsumowanie
Pętle mogą być łączone z tablicami, aby szybko pracować z dowolną liczbą wartości. Jeśli chcesz mieć dokładną kontrolę nad tym, co dzieje się z kilkoma częściami i w jakiej kolejności, tablica musi być zakodowana na sztywno z określonymi wartościami.
Aby pracować z wieloma częściami, gdzie kolejność nie ma znaczenia, GetChildren() może stworzyć tablicę dzieci obiektu. Wykorzystując ipairs(), lista może być szybko iterowana bez znajomości rozmiaru tablicy.