Matryce można łączyć z pętlami, takimi jak podczas i dla , aby powtarzać ten sam kod dla każdej wartości zindeksowanej. Na przykład teleportacja każdego gracza w matrycy do nowego miejsca lub stworzenie matryki części do zapłonu.
Aby zbadać pętlenie poprzez matryce, utwórz znikającego drogi moста, w którym części są umieszczone w matrycy, a następnie uczynić go zniknąć jeden po drugim.
Pętanie przez matrycę
Dla projektu znajdź lub stwórz zestaw trzech części, aby zniknąć. Wszystkie części muszą być zatrzymane.
Utwórz trzy części. Nazwij części w porządku, w którym powinny zniknąć, Part1, Part2, Part3.
W ServerScriptService wpisz nowy skrypt i stwórz w nim menu, aby przechować części.
local pathArray = {}Na jednej linii każdej, wpisz nazwę części w porządku, w którym powinny zniknąć. Używając nowej linii dla każdej wartości, ułatwia to przeczytane.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Używanie for Loop z maszyną wieloróżnicową
Użyj for pętli, aby przejść przez maszynę przez maszynę i kontrolować, jak szybko części powinny zniknąć w porządku, w jakim są części indeksowane w maszynie.
Aby kontrolować, jak często część zniknie w sekundach, stwórz zmienne nazyjące się VANISH_RATE . Dla testu najlepiej utrzymać go na małej liczbie.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Utwórz for pętli z obserwujeelementami: Start:partIndex = 1, indeks pierwszej wartości w matrycy. End:2> #pathArray2>, rozmiar tego Arrays.
for partIndex = 1, #pathArray doendWięc 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 uzyskać część do zniknięcia, utwórz nową zmienne nazyającą się whichPart i ustaw ją równa partsArray[partIndex] . Następnie, aby usunąć tę część, ustaw jej właściwość CanCollide na false i ustaw transparency na 1.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endSprawdź, czy części drogi 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 twoja postać wchodzi w interakcję, pierwsze części mogą być już niewidoczne. Aby to naprawić, dodaj małą czekając, taką jak task.wait(2) , na początku skryptu.
Kodowanie drugiego pętla
W tej chwili części znikają na zawsze. Aby je ponownie pojawić, stwórz sekundę do pętli, która przejdzie przez każdą część i natychmiastnie uczyni każdą część chodzącą.
Po pierwszej pętli dodaj task.wait() , aby stworzyć krótkie opóźnienie przed ponownym pojawieniem się drogi.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Sam na sam , spróbuj zaimplementować drugi dla pętli, który ponownie uczynia drogę używalną poprzez zmianę właściwości CanCollide każdej części na prawdę i Transparency na 0. Po zakończeniu sprawdź swoją pracę wobec kodu poniżej.
-- Zresetuj drogę, ponownie umożliwiając chodzenie wszystkich częścifor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endTestuj projekt, aby potwierdzić, że po pojawieniu się wszystkich części, wstecz.
Powtarzanie z użyciem while loop
Części znikają i ponownie pojawiają się, ale tylko raz. Aby uczynić kod nadal się powtarzał, wszystkie kody muszą być w pętli czasowej.
Na dole skryptu utwórz nowy, prawdziwy do pętli. Następnie, przenieś obie dla pętli do pętli.
while true do-- Uczynić część niewidoczną z массива w porządkufor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj na sekundę, zanim droga zniknie ponownietask.wait(1)-- Zresetuj drogę, ponownie umożliwiając chodzenie wszystkich częścifor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendSprawdź, że po usunięciu wszystkich części ponownie się pojawiają.
Ukończona wersja projektu może być zesłana.
Ukończony skrypt
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Uczynić część niewidoczną z массива w porządkufor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Poczekaj na sekundę, zanim droga zniknie ponownietask.wait(1.0)-- Zresetuj drogę, ponownie umożliwiając chodzenie wszystkich częścifor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
Matryce i ipairs()
ipairs() używa się z 阵列 . „i” w ipairs() oznacza „indeks”. ipairs() może być używany do szybkiego powtarzania operacji na wielu obiektach, takich jak, powiedzmy, katalog pełen części.
Zostanie to pokazane poprzez szybkie dodawanie cząsteczek do całego katalogu części.
W przestrzeni roboczej utwórz katalog nazyający się PartsFolder. Dodaj tyle części, ile chcesz.
W ServerScriptService utwórz nowy skrypt i odnów jego plik.
Użyj GetChildren() aby automatycznie uzyskać listę arkuszy Excel wszystkich obiektów w katalogu.
local partsFolder = workspace.PartsFolder-- Dostarcza listę arkuszy w katalogu części w katalogu częścilocal partsArray = partsFolder:GetChildren()Użyj in ipairs(ArrayToUse) z for pętli, aby przejść przez części Array i dodać cząsteczki.
Ukończony skrypt-- Dostarcza listę arkuszy w katalogu części w katalogu częścilocal partsArray = partsFolder:GetChildren()-- Dodaje cząsteczki do każdej części w matrycyfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Zagrajtestuj i obserwuj, jakąły wznoszą się z każdej części w katalogu.
Podsumowanie
Pętle można łączyć z matrycami, aby szybko pracować z dowolną liczbą wartości. Jeśli chcesz mieć dokładną kontrolę nad tym, co dzieje się z kilku części i w jakiej kolejności, matryca musi być zapisana z okreśленnymi wartościami.
Aby pracować z wieloma częściami, w których nie ma znaczenia kolejność, GetChildren() może utworzyć maszynę wielkości obiektu. Używając ipairs(), listę można szybko przeszukiwać bez znajomości rozmiaru maszyny.