배열 은 반복 가능한 코드를 생성하기 위해 루프와 함께 사용될 수 있습니다, 예를 들어 while 및 for , 각 인덱싱된 값에 대해 동일한 코드를 반복합니다. 예를 들어, 각 플레이어를 배열에 새로 이동하거나 배열의 부품을 잡이는 불이 생성됩니다.
배열을 통해 반복을 탐색하려면 부품이 배열에 배치된 다음 하나씩 사라지도록 사라지는 다리 경로를 만듭니다.To explore looping through arrays, create a disappearing bridge path where parts are placed into an array and then made to vanish one by one.
배열을 통과하는 반복
프로젝트에서 사라지도록 하려면 세 개의 부품 세트를 찾거나 생성합니다. 부품은 모두 고정되어 있어야 합니다.
3개의 부품을 만듭니다. 부품 이름은 부품이 사라질 순서대로 Part1, Part2, Part3입니다.
In ServerScriptService, 새 스크립트를 삽입하고 부품을 저장하기 위한 배열을 생성합니다.
local pathArray = {}각 줄마다 이름을 입력하세요. 각 값에 대해 새 줄을 사용하면 읽음더 쉽습니다.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
배열을 사용하여 루프 사용
for 루프를 사용하여 배열을 통과하고 부품이 배열 내에 얼마나 빨리 사라지는지 제어하십시오.
부품이 얼마나 자주 사라지는지 조정하려면 변수 VANISH_RATE 를 만듭니다. 테스트를 위해 작은 숫자로 유지하는 것이 좋습니다.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}팔로잉사용하여 루프를 만듭니다. 시작: partIndex = 1 , 배열의 첫 번째 값의 인덱스. 끝: 1> #pathArray1> , 배열의 크기입니다.
for partIndex = 1, #pathArray doend그래서 부품이 사라지기 전에 지연이 있으므로, 루프에서 task.wait() 를 사용하여 VANISH_RATE .
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)end부품을 사라지려면 새로운 변수 이름 whichPart 을 만들고 partsArray[partIndex] 와 같이 설정하십시오. 그런 다음 부품을 사라지려면 CanCollide 속성을 가짜로 설정하고 1> Transparency1> 를 1로 설정합니다.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end경로의 특정 부분이 시간이 지남에 따라 사라지는지 확인하십시오.
문제 해결 팁
다리가 사라지지 않으면 아래의 문제를 확인하세요. 문제: 부품이 너무 빨리 사라지거나 시작 시 모두 사라집니다.
- 캐릭터가 경험에 얼마나 빨리 로드되는지에 따라 첫 번째 부품은 이미 보이지 않을 수 있습니다. 이를 해결하려면 스크립트 시작 부분에 task.wait(2), task.wait(2).
두 번째 루프 작성
지금은 부품이 영원히 사라집니다. 부품을 다시 만들려면 각 부품을 통과하는 루프를 만들고 즉시 각 부품을 워크 가능하게 합니다.
첫 번째 루프 후에 task.wait()를 추가하여 경로가 다시 나타나기 전에 짧은 지연을 만듭니다.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)자신에게 , 각 부품의 CanCollide 속성을 참조하여 경로를 다시 사용 가능하게 하고 투명도를 0으로 변경하여 루프를 만드는 두 번째 코드를 작성하십시오. 완료되면 아래 코드와 작업을 비교하십시오.
-- 모든 부품을 다시 걸을 수 있게 하여 경로를 재설정for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0end모든 부품이 사라진 후 다시 오는지 확인하기 위해 프로젝트를 테스트하십시오.
While 루프로 반복
부품이 사라지고 다시 나타나지만, 단지 한 번. 코드를 반복하려면 코드를 모두 한 번에 중첩하십시오.
스크립트 하단에서 새로운 루프를 만듭니다. 그런 다음 모두를 루프로 이동합니다.
while true do-- 배열에서 부품을 사라지게 하십시오.for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- 경로를 다시 만들기 전에 두 번 기다리세요task.wait(1)-- 모든 부품을 다시 걸을 수 있게 하여 경로를 재설정for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend모든 부품이 사라진 후 다시 나타나는지 확인하십시오.
프로젝트의 완성된 버전을 다운로드할 수 있습니다.
완료된 스크립트
local VANISH_RATE = 1.0local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}while true do-- 배열에서 부품을 사라지게 하십시오.for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- 경로를 다시 만들기 전에 두 번 기다리세요task.wait(1.0)-- 모든 부품을 다시 걸을 수 있게 하여 경로를 재설정for partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endend
배열 및 ipairs()
ipairs() 는 배열과 함께 사용됩니다. 배열에 있는 "i"는 "인덱스"를 의미합니다. 배열을 사용하여 부품 폴더와 같은 많은 개체에 대해 작업을 빠르게 반복할 수 있습니다.
이것은 빠르게 파티클을 전체 파일 폴더에 추가하여 보여 주는 방법으로 입증됩니다.
작업 공간에서 부품 폴더라는 이름의 폴더를 생성합니다. 원하는 만큼의 부품을 추가하십시오.
In ServerScriptService, 새 스크립트를 생성하고 폴더에 참조하십시오.
GetChildren()를 사용하여 폴더에 있는 모든 개체의 목록을 자동으로 가져옵니다.
local partsFolder = workspace.PartsFolder-- 파츠 폴더의 파츠를 열거하는 배열을 가져옵니다.Gets an array listing the parts in PartsFolderlocal partsArray = partsFolder:GetChildren()for 루프를 사용하여 파츠 배열을 검사하고 입자를 추가하십시오.Use in ipairs(ArrayToUse) with the for loop to go through partsArray and add particles.
완료된 스크립트-- 파츠 폴더의 파츠를 열거하는 배열을 가져옵니다.Gets an array listing the parts in PartsFolderlocal partsArray = partsFolder:GetChildren()-- 배열의 모든 부품에 입자 추가for index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
플레이테스트 및 폴더의 모든 부분에서 입자가 부상하는 것을 확인하십시오.
요약
루프는 배열과 결합하여 빠르게 값 세트를 작업할 수 있습니다. 몇 개의 부품에 대해 정확한 제어를 원하는 경우 배열은 특정 값으로 하드코딩되어야 합니다.
순서가 중요하지 않은 많은 부품에서 작동하려면 GetChildren() 는 개체의 자식 배열을 만들 수 있습니다. 배열의 크기를 알지 않고 목록을 빠르게 반복하려면 ipairs() 를 사용합니다.