루프와 배열

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

배열 은 반복문(예: whilefor )과 결합하여 인덱스된 각 값에 대해 동일한 코드를 반복할 수 있습니다.예를 들어, 배열에서 각 플레이어를 새로운 장소로 순간이동하거나 부품 배열이 발화하도록 만드는 등입니다.

배열을 루프하여 탐색하려면 부품이 배열에 배치되고 그 후 하나씩 사라지는 사라지는 다리 경로를 만듭니다.

배열을 루프하기

프로젝트에서 사라지게 하려면 세트의 세 부분을 찾거나 생성하십시오. 부품은 모두 고정되어야 합니다.

  1. 세 부분을 만듭니다. 사라져야 할 순서대로 부분의 이름을 지정하세요, Part1, Part2, Part3.

  2. ServerScriptService에서 새 스크립트를 삽입하고 부품을 저장할 배열을 만듭니다.


    local pathArray = {
    }
  3. 각 라인에서 순서대로 부품의 이름을 입력하십시오. 각 값에 대해 새 라인을 사용하면 읽음더 쉬워집니다.


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

배열로 for 루프 사용

for 루프를 사용하여 배열을 통해 이동하고 부품이 배열 내에서 순서대로 사라지는 속도를 제어합니다.

  1. 부품이 초당 얼마나 자주 사라지는지 제어하려면 VANISH_RATE라는 변수를 만듭니다. 테스트를 위해서는 작은 숫자로 유지하는 것이 가장 좋습니다.


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 팔로잉반복문을 생성합니다: 시작: partIndex = 1 , 배열의 첫 번째 값의 인덱스. 끝: #pathArray , 해당 배열의 크기.


    for partIndex = 1, #pathArray do
    end
  3. 따라서 부품이 사라지기 전에 루프에서 task.wait()를 사용하여 VANISH_RATE을 추가합니다.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. 부품을 사라지게 하려면 whichPart라는 새 변수를 만들고 partsArray[partIndex]와 같게 설정하십시오.그런 다음, 그 부분을 사라지게 하려면 CanCollide 속성을 false로 설정하고 Transparency 를 1로 설정합니다.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. 경로의 일부가 시간이 지남에 사라지는지 확인합니다.

문제 해결 팁

브리지가 사라지지 않으면 아래의 가능한 문제를 확인하십시오: 문제: 부품이 너무 빨리 사라지거나 시작 시 모두 사라집니다.

  • 캐릭터가 경험에 얼마나 빨리 로드되는지에 따라 첫 부분이 이미 보이지 않을 수 있습니다.이를 해결하려면 스크립트 시작 부분에 task.wait(2)와 같은 간단한 대기를 추가하십시오.

두 번째 루프 코드

현재 부품은 영원히 사라집니다.다시 나타나게 하려면 각 부분을 통과하고 즉시 각 조각을 보행 가능하게 만드는 두 번째 루프를 만듭니다.

  1. 첫 루프 이후에는 경로가 다시 나타나기 전에 짧은 지연을 만들기 위해 task.wait()를 추가합니다.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. 직접 에서 두 번째 루프를 코딩하여 각 부분의 CanCollide 속성을 true로 변경하고 Transparency를 0으로 변경하여 경로를 다시 사용할 수 있도록 합니다.완료되면 아래 코드와 작업을 비교하십시오.


    -- 모든 부품을 다시 걸을 수 있도록 경로를 재설정하여 길을 재설정하세요
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. 모든 부품이 사라진 후 돌아오는지 확인하기 위해 프로젝트를 테스트합니다.

while 루프로 반복

부품은 사라지고 다시 나타나지만, 한 번만 반복됩니다. 코드가 계속 반복되도록 모든 코드를 while 루프 내에 중첩하십시오.

  1. 스크립트 맨 아래에서 새로운 while 루프를 생성하고, 루프를 모두 while 루프로 이동합니다.


    while true do
    -- 순서대로 배열에서 부품을 사라지게 하기
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- 경로가 다시 나타나기 전에 1초 기다리기
    task.wait(1)
    -- 모든 부품을 다시 걸을 수 있도록 경로를 재설정하여 길을 재설정하세요
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. 모든 부품이 사라진 후 다시 나타나는지 확인합니다.

프로젝트의 완성된 버전을 다운로드할 수 있습니다.

완료된 스크립트

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- 순서대로 배열에서 부품을 사라지게 하기
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- 경로가 다시 나타나기 전에 1초 기다리기
task.wait(1.0)
-- 모든 부품을 다시 걸을 수 있도록 경로를 재설정하여 길을 재설정하세요
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

배열 및 ipairs()

ipairs()배열 과 함께 사용됩니다.ipairs() 의 "i"는 "인덱스"를 의미합니다. ipairs()를 사용하여 많은 개체에서 작업을 신속하게 반복할 수 있습니다. 예를 들어, 부품이 가득한 폴더입니다.

이는 전체 파트 폴더에 빠르게 입자를 추가하여 보여줄 것입니다.

  1. 작업 공간에서 PartsFolder라는 폴더를 만듭니다. 원하는 만큼의 부품을 추가합니다.

  2. ServerScriptService에서 새 스크립트를 만들고 폴더를 참조하십시오.

  3. GetChildren()을 사용하여 폴더에 있는 모든 개체를 자동으로 나열하는 배열을 자동으로 가져옵니다.


    local partsFolder = workspace.PartsFolder
    -- PartsFolder에 있는 부품 목록을 가져옵니다
    local partsArray = partsFolder:GetChildren()
  4. for 루프를 사용하여 부품 배열을 통과하고 입자를 추가하려면 in ipairs(ArrayToUse)를 사용하십시오.

    완료된 스크립트

    -- PartsFolder에 있는 부품 목록을 가져옵니다
    local partsArray = partsFolder:GetChildren()
    -- 배열의 모든 부품에 입자를 추가합니다
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

플레이테스트를 수행하고 폴더의 모든 부분에서 입자가 떠오르는 것을 관찰합니다.

요약

루프는 배열과 결합하여 모든 값을 신속하게 처리할 수 있습니다.몇 부분에 어떤 일이 일어나고 순서가 무엇인지 정확하게 제어하려면 특정 값으로 배열을 하드코딩해야 합니다.

순서가 중요하지 않은 많은 부품에서 작업하려면 GetChildren()는 개체의 자식 배열을 만들 수 있습니다.ipairs()를 사용하여 목록은 배열의 크기를 알지 않고도 빠르게 반복될 수 있습니다.