Pętle i tablice

*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.

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.

  1. Stwórz trzy części. Nazwij części w kolejności, w której powinny zniknąć, część1, część2, część3.

  2. W ServerScriptService wstaw nowy skrypt i utwórz tablicę, aby przechować części.


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

  1. 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.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 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 do
    end
  3. Więc jest opóźnienie, zanim część znika, w pętlu, dodaj task.wait() używając VANISH_RATE.


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

  1. Po pierwszym cyklu dodaj task.wait() aby stworzyć krótki opóźnienie przed ponownym pojawieniem się ścieżki.


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

  1. 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ści
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Poczekaj chwilę, zanim ponownie pojawi się ścieżka
    task.wait(1)
    -- Zresetuj ścieżkę, sprawiając, że wszystkie części znów będą dostępne
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Sprawdź, czy po zniknięciu wszystkich części pojawią się ponownie.

Można pobrać skończoną wersję projektu.

Zakończony skrypt

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Zrób, aby część zniknęła z listy w kolejności
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Poczekaj chwilę, zanim ponownie pojawi się ścieżka
task.wait(1.0)
-- Zresetuj ścieżkę, sprawiając, że wszystkie części znów będą dostępne
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

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.

  1. W przestrzeni roboczej utwórz folder o nazwie PartsFolder. Dodaj tak wiele części, jak chcesz.

  2. W ServerScriptService utwórz nowy skrypt i odwołaj się do katalogu.

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

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.