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.
Crie três peças. Nomeie as peças na ordem em que elas devem desaparecer, Peça1, Peça2, Peça3.
In ServerScriptService, execute um novo script e crie um array para armazenar as peças.
local pathArray = {}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.
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.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}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 doendEntão há um atraso antes que uma parte desapareça, no loop, adicione um task.wait() usando VANISH_RATE.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endPara 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 dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endVerifique 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.
Depois do primeiro loop, adicione um task.wait() para criar um pequeno atraso antes que o caminho apareça novamente.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)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 novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endTeste 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.
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 ordemfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espere um segundo antes de fazer o caminho reaparecertask.wait(1)-- Redefina o caminho fazendo com que todas as peças caminhem novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendVerifique 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.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- Faça uma parte desaparecer do array em ordemfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Espere um segundo antes de fazer o caminho reaparecertask.wait(1.0)-- Redefina o caminho fazendo com que todas as peças caminhem novamentefor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
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.
In Workspace, create a folder named PartsFolder. Adicionar quantas partes você quiser.
In ServerScriptService, Create a new script and reference the folder.
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 PartsFolderlocal partsArray = partsFolder:GetChildren()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 PartsFolderlocal partsArray = partsFolder:GetChildren()-- Adiciona partículas a cada parte na matriz / listafor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
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.