Loops e Arrays

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

Matrizes podem ser combinadas com loops, como enquanto e para , para repetir o mesmo código para cada valor indexado. Por exemplo, teletransportar cada jogador em uma matriz para um novo lugar ou fazer uma matriz de peças Iniciar / executar.

Para explorar o looping através de matrizes, crie um caminho de ponte desaparecente onde as peças são colocadas em uma matriz e, em seguida, feitas para desaparecer uma a uma.

Girando através de uma matriz

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

  1. Crie três partes. Nomeie as partes na ordem em que deveriam desaparecer, Parte1, Parte2, Parte3.

  2. No ServerScriptService, insira um novo script e crie uma matriz para armazenar as peças.


    local pathArray = {
    }
  3. Em uma única linha cada, digite o nome das peças na ordem em que deveriam desaparecer. Usar uma nova linha para cada valor torna mais fácil de ler.


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

Usando um para Loop com um Array

Use um loop para passar pela matriz e controlar o quão rápido as peças devem desaparecer na ordem em que as peças são indexadas dentro da matriz / lista.

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


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


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


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Para que uma parte desapareça, crie uma nova variável chamada whichPart e defina-a como partsArray[partIndex] . Então, para que essa parte desapareça, defina sua propriedade CanCollide como falsa e Transparency como 1.


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

Dicas de solução de problemas

Se a ponte não desaparecer, verifique os possíveis problemas abaixo: Problema: Partes desaparecem muito rápido ou desapareceram todas no iniciar.

  • Dependendo de quão rápido seu personagem carregue na experiência, as primeiras partes já podem ser invisíveis. Para resolver isso, adicione uma pequena espera, como task.wait(2) , no início do script.

Codificando o Segundo Loop

Agora, as peças desaparecem para sempre. Para fazê-las reaparecer, crie um segundo para o loop que passará por cada parte e instantaneamente tornará cada peça andável.

  1. Após o primeiro loop, adicione um task.wait() para criar um pequeno atraso antes que o caminho reapareça.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. Em seu próprio , tente codificar um segundo para o loop que torne o caminho utilizável novamente alterando a propriedade CanCollide de cada parte para true e Transparência para 0. Quando estiver pronto, verifique seu trabalho com o código abaixo.


    -- Reinicie o caminho tornando todas as partes caminháveis 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 desaparecem, elas voltar.

Repetindo com um ciclo de um tempo

As partes desaparecem e reaparecem, mas apenas uma vez. Para fazer com que o código continue se repetindo, anote todo o código dentro de um loop.

  1. Na parte inferior do script, crie um novo loop while true do. Então, mova ambos os loops para o loop while.


    while true do
    -- Faça uma parte desaparecer da matriz 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)
    -- Reinicie o caminho tornando todas as partes caminháveis novamente
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Verifique se, uma vez que todas as peças desaparecem, elas reaparecem.

Uma versão finalizada 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 da matriz 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)
-- Reinicie o caminho tornando todas as partes caminháveis novamente
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

Matrizes e ipairs ()

ipairs() é usado com matrizes . O "i" em ipairs() significa "index." ipairs () pode ser usado para repetir rapidamente uma operação em muitos objetos, como, por exemplo, uma pasta cheia de peças.

Isso será demonstrado adicionando rapidamente partículas a uma pasta inteira de peças.

  1. No Workspace, crie uma pasta chamada PartsFolder. Adicione quantas peças você quiser.

  2. No ServerScriptService, crie um novo script e faça referência à pasta.

  3. Use GetChildren () para obter automaticamente uma matriz listando todos os objetos na pasta.


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

    scriptconcluído

    -- Obtém uma matriz listando as peças na Pasta de Peças
    local partsArray = partsFolder:GetChildren()
    -- Adiciona partículas a todas as partes da matriz / lista
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

Jogue o teste e observe as partículas flutuarem de todas as partes da pasta.

Resumo

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

Para trabalhar com muitas partes onde a ordem não importa, GetChildren () pode criar uma matriz de filhos de um Objeto. Usando ipairs(), a lista pode ser rapidamente iterada sem saber o tamanho da matriz / lista.