루프 및 배열

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

배열 은 반복 가능한 코드를 생성하기 위해 루프와 함께 사용될 수 있습니다, 예를 들어 whilefor , 각 인덱싱된 값에 대해 동일한 코드를 반복합니다. 예를 들어, 각 플레이어를 배열에 새로 이동하거나 배열의 부품을 잡이는 불이 생성됩니다.

배열을 통해 반복을 탐색하려면 부품이 배열에 배치된 다음 하나씩 사라지도록 사라지는 다리 경로를 만듭니다.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.

배열을 통과하는 반복

프로젝트에서 사라지도록 하려면 세 개의 부품 세트를 찾거나 생성합니다. 부품은 모두 고정되어 있어야 합니다.

  1. 3개의 부품을 만듭니다. 부품 이름은 부품이 사라질 순서대로 Part1, Part2, Part3입니다.

  2. In ServerScriptService, 새 스크립트를 삽입하고 부품을 저장하기 위한 배열을 생성합니다.


    local pathArray = {
    }
  3. 각 줄마다 이름을 입력하세요. 각 값에 대해 새 줄을 사용하면 읽음더 쉽습니다.


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

배열을 사용하여 루프 사용

for 루프를 사용하여 배열을 통과하고 부품이 배열 내에 얼마나 빨리 사라지는지 제어하십시오.

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


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. 팔로잉사용하여 루프를 만듭니다. 시작: partIndex = 1 , 배열의 첫 번째 값의 인덱스. 끝: 1> #pathArray1> , 배열의 크기입니다.


    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 속성을 가짜로 설정하고 1> Transparency1> 를 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), 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 속성을 참조하여 경로를 다시 사용 가능하게 하고 투명도를 0으로 변경하여 루프를 만드는 두 번째 코드를 작성하십시오. 완료되면 아래 코드와 작업을 비교하십시오.


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

While 루프로 반복

부품이 사라지고 다시 나타나지만, 단지 한 번. 코드를 반복하려면 코드를 모두 한 번에 중첩하십시오.

  1. 스크립트 하단에서 새로운 루프를 만듭니다. 그런 다음 모두를 루프로 이동합니다.


    while true do
    -- 배열에서 부품을 사라지게 하십시오.
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- 경로를 다시 만들기 전에 두 번 기다리세요
    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
-- 경로를 다시 만들기 전에 두 번 기다리세요
task.wait(1.0)
-- 모든 부품을 다시 걸을 수 있게 하여 경로를 재설정
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

배열 및 ipairs()

ipairs() 는 배열과 함께 사용됩니다. 배열에 있는 "i"는 "인덱스"를 의미합니다. 배열을 사용하여 부품 폴더와 같은 많은 개체에 대해 작업을 빠르게 반복할 수 있습니다.

이것은 빠르게 파티클을 전체 파일 폴더에 추가하여 보여 주는 방법으로 입증됩니다.

  1. 작업 공간에서 부품 폴더라는 이름의 폴더를 생성합니다. 원하는 만큼의 부품을 추가하십시오.

  2. In ServerScriptService, 새 스크립트를 생성하고 폴더에 참조하십시오.

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


    local partsFolder = workspace.PartsFolder
    -- 파츠 폴더의 파츠를 열거하는 배열을 가져옵니다.Gets an array listing the parts in PartsFolder
    local partsArray = partsFolder:GetChildren()
  4. for 루프를 사용하여 파츠 배열을 검사하고 입자를 추가하십시오.Use in ipairs(ArrayToUse) with the for loop to go through partsArray and add particles.

    완료된 스크립트

    -- 파츠 폴더의 파츠를 열거하는 배열을 가져옵니다.Gets an array listing the parts in PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- 배열의 모든 부품에 입자 추가
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

플레이테스트 및 폴더의 모든 부분에서 입자가 부상하는 것을 확인하십시오.

요약

루프는 배열과 결합하여 빠르게 값 세트를 작업할 수 있습니다. 몇 개의 부품에 대해 정확한 제어를 원하는 경우 배열은 특정 값으로 하드코딩되어야 합니다.

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