Tablicy można łączyć z pędzlami, takimi jak while i dla , aby powtórzyć ten sam kod dla każdej indeksowanej wartości.Na przykład teleportowanie każdego gracza w kolekcji do nowego miejsca lub sprawienie, że kolekcja części złapie ogień.
Aby zbadać pętle poprzez matryce, stwórz znikającą ścieżkę mostową, na której części są umieszczane w matrycy, a następnie sprawiają, że znikają jedna po drugiej.
Pętla przez tablicę
Dla projektu znajdź lub stwórz zestaw trzech części, aby zniknąć. Wszystkie części muszą być zakotwiczone.
Stwórz trzy części. Nazwij części w kolejności, w której powinny zniknąć, część1, część2, część3.
W ServerScriptService wstaw nowy skrypt i utwórz tablicę, aby przechować części.
local pathArray = {}Na każdej pojedynczej linii wpisz nazwę części w kolejności, w jakiej powinny zniknąć. Użycie nowej linii dla każdej wartości ułatwia przeczytane.
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 zniknąć w kolejności, w jakiej są indeksowane w tablicy.
Aby kontrolować, jak często część znika w ciągu kilku sekund, stwórz zmienną o nazwie VANISH_RATE. Do testowania najlepiej utrzymać ją w małej liczbie.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Stwórz pętelę for z obserwuje: Początek: partIndex = 1 , indeksem pierwszego wartości w array. Koniec: #pathArray , rozmiar tej matrycy.
for partIndex = 1, #pathArray doendWięc jest opóźnienie, zanim część znika, w pętlu, dodaj task.wait() używając VANISH_RATE.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endAby część zniknęła, utwórz nową zmienną o nazwie whichPart i ustaw ją równą partsArray[partIndex].Następnie, aby zniknąć tę część, ustaw jej właściwość CanCollide na fałsz 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ą z czasem.
Wskazówki dotyczące rozwiązywania problemów
Jeśli most nie zniknie, sprawdź możliwe problemy poniżej: Problem: Części znikają zbyt szybko lub wszystkie znikają na rozpoczynać.
- W zależności od tego, jak szybko twój postać wczytuje się do doświadczenia, pierwsze części mogą już być niewidoczne.Aby to rozwiązać, dodaj małą czekę, taką jak task.wait(2), na początku skryptu.
Zrealizuj drugi cykl
W tej chwili części znikają na zawsze.Aby je ponownie pojawiły się, utwórz pętlę drugorzędną, która przejdzie przez każdą część i natychmiast sprawi, że każda część będzie dostępna.
Po pierwszym cyklu dodaj task.wait() aby stworzyć krótki 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ą odpowiedzialność , spróbuj skodować drugi cykl pętla, który ponownie uczyni ścieżkę dostępną, zmieniając właściwość CanCollide każdej części na prawdę i przejrzystość na 0.Po zakończeniu sprawdź swoją pracę przeciwko kodowi poniżej.
-- Zresetuj ścieżkę, sprawiając, że wszystkie części znów będą dostępnefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endPrzetestuj projekt, aby potwierdzić, że po tym, jak wszystkie części znikną, wstecz.
Powtórz za pomocą pętla while
Części znikają i ponownie pojawiają się, ale tylko raz. Aby kod nadal się powtarzał, zamknij cały kod w pędzie while.
Na dole skryptu utwórz nowy pętel while prawdziwy. Następnie przenieś oba pętle do pętla while.
while true do-- Zrób, aby część zniknęła z listy w kolejnościfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj chwilę, zanim ponownie pojawi się ścieżkatask.wait(1)-- Zresetuj ścieżkę, sprawiając, że wszystkie części znów będą dostępnefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendSprawdź, czy po zniknięciu wszystkich części pojawią się ponownie.
Można pobrać skończoną wersję projektu.
Zakończony skrypt
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Zrób, aby część zniknęła z listy w kolejnościfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj chwilę, zanim ponownie pojawi się ścieżkatask.wait(1.0)-- Zresetuj ścieżkę, sprawiając, że wszystkie części znów będą dostępnefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Tablice i ipairs()
ipairs() jest używany z matrycami .Litera "i" w ipairs() oznacza "indeks". ipairs() można użyć, aby szybko powtórzyć operację na wielu obiektach, takich jak, powiedzmy, katalog pełen części.
Zostanie to pokazane, dodając szybko cząstki do całego katalogu części.
W przestrzeni roboczej utwórz folder o nazwie PartsFolder. Dodaj tak wiele części, jak chcesz.
W ServerScriptService utwórz nowy skrypt i odwołaj się do katalogu.
Użyj GetChildren() aby automatycznie uzyskać listę tablicy wszystkich obiektów w folderze.
local partsFolder = workspace.PartsFolder-- Otrzymuje listę tablicy zawierającą części w katalogu PartsFolderlocal partsArray = partsFolder:GetChildren()Użyj in ipairs(ArrayToUse) z pętlą for, aby przejść przez partsArray i dodać cząstki.
Zakończony skrypt-- Otrzymuje listę tablicy zawierającą części w katalogu PartsFolderlocal partsArray = partsFolder:GetChildren()-- Dodaje cząstki do każdej części w matrycyfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Przetestuj i obserwuj, jak cząstki 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, matryca musi być skodowana za pomocą określonych wartości.
Aby pracować z wieloma częściami, w których nie ma znaczenia kolejność, GetChildren() może tworzyć tablicę dzieci obiektu.Używając ipairs(), lista może być szybko przetwarzana bez znajomości rozmiaru matrycy.