Ciclos e Arrays

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Arrays podem ser combinados com loops, como enquanto e por , para repetir o mesmo código para cada valor indexado. Por exemplo, teletransportar cada jogador em um arranjo para um novo local ou fazer um arranjo de peças pegar Iniciar / executar.

Para explorar looping através de matrizes, crie um caminho de ponte desaparecendo onde as peças são colocadas em uma matriz e depois fazer para desaparecer um por um.

Looping através de um Array

Para o projeto, encontre ou crie um conjunto de três peças para fazer desaparecer. As peças devem todas estar ancoradas.

  1. Crie três peças. Nomeie as peças na ordem em que elas devem desaparecer, Peça1, Peça2, Peça3.

  2. In ServerScriptService, execute um novo script e crie um array para armazenar as peças.


    local pathArray = {
    }
  3. Em uma única linha, cada, digite o nome das peças na ordem em que elas devem desaparecer. Usar uma nova linha para cada valor facilita a ler.


    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3,
    }

Usando um for Loop Com um Array

Use um for loop para ir através do array e controlar o quão rápido as peças devem desaparecer na ordem como as peças são indexadas dentro do matriz / lista.

  1. Para controlar com frequência que uma peça desaparece em segundos, crie uma variável chamada VANISH_RATE . Para testes, é melhor manter a peça em um pequeno número.


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. Crie um for loop com o seguindo: Começo: partIndex = 1 , o índice do primeiro valor na matriz / lista. Fim: 1> #pathArray1>, o tamanho daquela matriz / lista.


    for partIndex = 1, #pathArray do
    end
  3. Então há um atraso antes que uma parte desapareça, no loop, adicione um task.wait() usando VANISH_RATE.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Para obter uma peça para desaparecer, crie uma nova variável chamada whichPart e configure-a para ser igual a partsArray[partIndex]. Em seguida, para desaparecer aquela peça, configure sua propriedade CanCollide para false e 1> Transparency1> para 1.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Verifique se as partes do caminho desaparecem ao longo do tempo.

Dicas de solução de problemas

Se a ponte não desaparecer, verifique os possíveis problemas abaixo: Problema: As peças desaparecem muito rápido ou estão todas no iniciar.

  • Dependendo do quão rápido seu personagem carrega na experiência, as primeiras partes podem já estar invisíveis. Para abordar isso, adicione uma pequena espera, como task.wait(2), no começo do script.

Código do Segundo Loop

Agora, as peças desaparecem para sempre. Para fazê-las reaparecerem, crie uma segunda para loop que irá passar por cada peça e instantaneamente tornar cada peça caminhável.

  1. Depois do primeiro loop, adicione um task.wait() para criar um pequeno atraso antes que o caminho apareça novamente.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. Por sua conta , tente codificar um segundo para loop que torna o caminho usável novamente alterando a propriedade CanCollide de cada peça para verdadeiro e Transparency para 0. Quando terminar, verifique seu trabalho em relação ao código abaixo.


    -- Redefina o caminho fazendo com que todas as peças caminhem novamente
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Teste o projeto para confirmar que, uma vez que todas as peças desaparecerem, elas voltarão.

Repetindo com um Loop While

As peças desaparecem e reaparecem, mas apenas uma vez. Para fazer com que o código se repita, anilhe todo o código em um loop de tempo.

  1. Na parte inferior do script, crie um novo while true do loop. Em seguida, move both para loops na while loop.


    while true do
    -- Faça uma parte desaparecer do array em ordem
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Espere um segundo antes de fazer o caminho reaparecer
    task.wait(1)
    -- Redefina o caminho fazendo com que todas as peças caminhem novamente
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Verifique se, quando todas as peças desaparecerem, elas reaparecerão.

Uma versão final do projeto pode ser baixada.

scriptconcluído

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Faça uma parte desaparecer do array em ordem
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Espere um segundo antes de fazer o caminho reaparecer
task.wait(1.0)
-- Redefina o caminho fazendo com que todas as peças caminhem novamente
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

Matrizes e ipairs()

ipairs() é usado com arranjos . O "i" em ipairs() significa "índice". O índice pode ser usado para repetir rapidamente uma operação em um monte de objetos, como, digamos, um pasta cheia de peças.

Isso será demonstrado ao adicionar rapidamente partículas a um conjunto inteiro de peças.

  1. In Workspace, create a folder named PartsFolder. Adicionar quantas partes você quiser.

  2. In ServerScriptService, Create a new script and reference the folder.

  3. Use GetChildren() para obter automaticamente uma lista de arranjos de todos os objetos no pasta.


    local partsFolder = workspace.PartsFolder
    -- Obtém um array listando as peças em PartsFolder
    local partsArray = partsFolder:GetChildren()
  4. Use in ipairs(ArrayToUse) com o for loop para passar por partsArray e adicionar partículas.

    scriptconcluído

    -- Obtém um array listando as peças em PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- Adiciona partículas a cada parte na matriz / lista
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

Teste e observe as partículas flutuarem de cada parte na pasta.

Visão Geral

Loop pode ser combinado com matrizes para trabalhar com qualquer número de valores rapidamente. Se você quiser ter controle exato sobre o que acontece com algumas peças e em qual ordem, uma matriz deve ser codificada com valores específicos.

Para trabalhar com muitas peças onde a ordem não importa, GetChildren() pode criar um array de filhos de um Objeto. Utilizando ipairs(), a lista pode ser itens rapidamente sem saber o tamanho da matriz / lista.