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.

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.

  1. Stwórz trzy części. Nazwij części w kolejności, w jakiej mają zniknąć, Part1, Part2, Part3.

  2. W ServerScriptService wstaw nowy skrypt i stwórz tablicę do przechowywania części.

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

  1. 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.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 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 do
    end
  3. Aby był opóźnienie 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 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 do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Sprawdź, 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.

  1. Po pierwszej pętli dodaj task.wait(), aby stworzyć krótkie 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ą 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 przejezdne
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Przetestuj 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.

  1. 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ś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)
    -- 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
    end
  2. Sprawdź, czy po zniknięciu wszystkich części, one się pojawiają.

Zakończoną wersję projektu można pobrać.

Zakończony skrypt
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
end

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

  1. W Workspace stwórz folder o nazwie PartsFolder. Dodaj tyle części, ile chcesz.

  2. W ServerScriptService stwórz nowy skrypt i odwołaj się do folderu.

  3. Użyj GetChildren(), aby automatycznie uzyskać tablicę zawierającą wszystkie obiekty w folderze.

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

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.

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.