Vòng lặp và mảng

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Mảng có thể được kết hợp với vòng lặp, chẳng hạn như trong khicho , để lặp lại cùng một mã cho mỗi giá trị được lưu trữ.Ví dụ, dịch chuyển mỗi người chơi trong một array đến một nơi mới hoặc làm cho một array các bộ phận bắt lửa.

Để khám phá vòng lặp qua các mảng, tạo một con đường cầu biến mất nơi các bộ phận được đặt vào một mảng và sau đó được làm cho biến mất một cách từ từ.

Vòng lặp qua một array

Đối với dự án, tìm hoặc tạo một bộ ba phần để biến mất. Các phần phải được neo tất cả.

  1. Tạo ba phần. Đặt tên các phần theo thứ tự chúng nên biến mất, Phần1, Phần2, Phần3.

  2. Trong ServerScriptService, chèn một kịch bản mới và tạo một mảng để lưu trữ các bộ phận.


    local pathArray = {
    }
  3. Trên mỗi dòng duy nhất, nhập tên của các bộ phận theo thứ tự chúng nên biến mất. Sử dụng một dòng mới cho mỗi giá trị làm cho nó dễ đã xemhơn.


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

Sử dụng một vòng lặp với một array

Sử dụng một vòng lặp để đi qua mảng và kiểm soát tốc độ mà các bộ phận phải biến mất trong trật tự mà các bộ phận được lưu trong mảng.

  1. Để kiểm soát tần suất một phần biến mất trong vài giây, hãy tạo một biến có tên là VANISH_RATE . Đối với kiểm tra, tốt nhất là giữ nó ở một số nhỏ.


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. Tạo một vòng lặp với các thành phần theo dõi: Bắt đầu: partIndex = 1 , chỉ mục của giá trị đầu tiên trong mảng. Kết thúc: #pathArray , kích thước của mảng đó.


    for partIndex = 1, #pathArray do
    end
  3. Vì vậy, có một sự chậm trễ trước khi một phần biến mất, trong vòng lặp, thêm một task.wait() sử dụng VANISH_RATE .


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Để có được một phần biến mất, tạo một biến mới có tên là whichPart và đặt nó bằng với partsArray[partIndex] .Sau đó, để biến mất phần đó, hãy đặt tính chất CanCollide của nó thành false và Transparency thành 1.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Kiểm tra xem các phần của đường đi biến mất theo thời gian.

Mẹo khắc phục sự cố

Nếu cầu không biến mất, hãy kiểm tra các vấn đề có thể xảy ra dưới đây: Vấn đề: Các bộ phận biến mất quá nhanh hoặc tất cả đã biến mất ngay từ bắt đầu.

  • Tùy thuộc vào tốc độ mà nhân vật của bạn tải vào trải nghiệm nhanh như thế nào, các phần đầu tiên có thể đã không hiển thị.Để giải quyết vấn đề này, thêm một chút chờ đợi, như task.wait(2) , ở đầu của kịch bản.

Mã hóa vòng lặp thứ hai

Hiện tại, các bộ phận biến mất mãi mãi.Để làm cho chúng xuất hiện trở lại, tạo một vòng lặp thứ hai sẽ đi qua mỗi phần và ngay lập tức làm cho mỗi khối có thể đi bộ.

  1. Sau vòng lặp đầu tiên, thêm một task.wait() để tạo một khoảng chờ ngắn trước khi con đường xuất hiện lại.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. Trên chính bạn , hãy thử viết một lần lặp thứ hai làm cho con đường có thể sử dụng trở lại bằng cách thay đổi tính năng CanCollide của mỗi phần thành true và Transparency thành 0.Khi hoàn thành, kiểm tra công việc của bạn chống lại mã dưới đây.


    -- Đặt lại con đường bằng cách làm cho tất cả các bộ phận có thể đi bộ trở lại
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Kiểm tra dự án để xác nhận rằng một khi tất cả các bộ phận biến mất, chúng sẽ quay quay lại.

Lặp lại với một vòng lặp while

Các bộ phận biến mất và xuất hiện lại, nhưng chỉ một lần. Để làm cho mã tiếp tục lặp lại, xếp chồng tất cả mã trong một vòng lặp while.

  1. Ở đáy của kịch bản, tạo một vòng lặp while mới trong khi true. Sau đó, di chuyển cả hai vào vòng lặp while.


    while true do
    -- Làm một phần biến mất khỏi mảng theo thứ tự
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Chờ một giây trước khi làm cho con đường xuất hiện lại
    task.wait(1)
    -- Đặt lại con đường bằng cách làm cho tất cả các bộ phận có thể đi bộ trở lại
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Kiểm tra xem một khi tất cả các bộ phận biến mất, chúng xuất hiện trở lại.

Phiên bản hoàn thành của dự án có thể được tải xuống.

Hoàn thành kịch bản

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Làm một phần biến mất khỏi mảng theo thứ tự
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Chờ một giây trước khi làm cho con đường xuất hiện lại
task.wait(1.0)
-- Đặt lại con đường bằng cách làm cho tất cả các bộ phận có thể đi bộ trở lại
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

Mảng và ipairs()

ipairs() được sử dụng với mảng .Chữ "i" trong ipairs() đại diện cho "index." ipairs() có thể được sử dụng để nhanh chóng lặp lại một hoạt động trên nhiều đối tượng, như, ví dụ, một thư mục chứa nhiều phần.

Điều này sẽ được minh chứng bằng cách nhanh chóng thêm các hạt vào toàn bộ thư mục các bộ phận.

  1. Trong Workspace, tạo một thư mục có tên PartsFolder. Thêm càng nhiều bộ phận như bạn muốn.

  2. Trong ServerScriptService, Tạo một kịch bản mới và tham chiếu thư mục.

  3. Sử dụng GetChildren() để tự động nhận một danh sách mảng chứa tất cả các đối tượng trong thư mục.


    local partsFolder = workspace.PartsFolder
    -- Nhận một danh sách mảng liệt kê các phần trong PartsFolder
    local partsArray = partsFolder:GetChildren()
  4. Sử dụng in ipairs(ArrayToUse) với vòng lặp for để đi qua partsArray và thêm các hạt.

    Hoàn thành kịch bản

    -- Nhận một danh sách mảng liệt kê các phần trong PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- Thêm hạt vào mỗi phần trong mảng
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

Thử nghiệm và xem các hạt nổi lên từ mọi phần trong thư mục.

Tổng quát

Vòng lặp có thể được kết hợp với mảng để làm việc với bất kỳ số lượng giá trị nào nhanh chóng.Nếu bạn muốn có kiểm soát chính xác về những gì xảy ra với một vài phần và theo thứ tự nào, một mảng phải được lập trước bằng các giá trị cụ thể.

Để làm việc với nhiều phần nơi mà lệnh không quan trọng, GetChildren() có thể tạo một mảng các con của một đối tượng.Sử dụng ipairs(), danh sách có thể được lặp lại nhanh chóng mà không cần biết kích thước của mảng.