Pętle i matryce

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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.

  1. Utwórz trzy części. Nazwij części w porządku, w którym powinny zniknąć, Part1, Part2, Part3.

  2. W ServerScriptService wpisz nowy skrypt i stwórz w nim menu, aby przechować części.


    local pathArray = {
    }
  3. 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.

  1. 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.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 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 do
    end
  3. Więc przed zniknięciem części, w pętli, dodaj task.wait() używając VANISH_RATE.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Aby 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 do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Sprawdź, 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ą.

  1. Po pierwszej pętli dodaj task.wait() , aby stworzyć krótkie opóźnienie przed ponownym pojawieniem się drogi.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. 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ęści
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Testuj 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.

  1. 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ądku
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Poczekaj na sekundę, zanim droga zniknie ponownie
    task.wait(1)
    -- Zresetuj drogę, ponownie umożliwiając chodzenie wszystkich części
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Sprawdź, ż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.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Uczynić część niewidoczną z массива w porządku
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Poczekaj na sekundę, zanim droga zniknie ponownie
task.wait(1.0)
-- Zresetuj drogę, ponownie umożliwiając chodzenie wszystkich części
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

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.

  1. W przestrzeni roboczej utwórz katalog nazyający się PartsFolder. Dodaj tyle części, ile chcesz.

  2. W ServerScriptService utwórz nowy skrypt i odnów jego plik.

  3. 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ęści
    local partsArray = partsFolder:GetChildren()
  4. 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ęści
    local partsArray = partsFolder:GetChildren()
    -- Dodaje cząsteczki do każdej części w matrycy
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

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.