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 các vòng lặp, chẳng hạn như whilefor, để lặp lại cùng một mã cho mỗi giá trị được chỉ mục. Ví dụ, dịch chuyển từng người chơi trong một mảng đến một địa điểm mới hoặc làm cho một mảng các phần bắt lửa.

Để khám phá việc lặp qua các mảng, hãy tạo một con đường cầu biến mất, nơi mà các phần được đặt vào một mảng và sau đó bị biến mất từng cái một.

Lặp qua một mảng

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

  1. Tạo ba phần. Đặt tên cho các phần theo thứ tự mà chúng nên biến mất, Part1, Part2, Part3.

  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 phần.


    local pathArray = {
    }
  3. Trên một dòng duy nhất, gõ tên các phần theo thứ tự mà chúng nên biến mất. Sử dụng một dòng mới cho mỗi giá trị sẽ dễ đọc hơn.


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

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

Sử dụng vòng lặp for để lặp qua mảng và kiểm soát tốc độ mà các phần nên biến mất theo thứ tự mà các phần được chỉ mục trong mảng.

  1. Để kiểm soát tần suất một phần biến mất trong giây, hãy tạo một biến tên là VANISH_RATE. Để thử nghiệm, 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 for với các tham số sau: 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. Để có một độ 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. Để làm cho một phần biến mất, hãy tạo một biến mới có tên là whichPart và gán nó bằng partsArray[partIndex]. Sau đó, để làm cho phần đó biến mất, đặt thuộc tính 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 rằng các phần của con đường 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 phần biến mất quá nhanh hoặc tất cả đã biến mất ngay từ đầu.

  • Tùy thuộc vào tốc độ mà nhân vật của bạn được tải vào trải nghiệm, các phần đầu tiên có thể đã vô hình. Để khắc phục, hãy thêm một khoảng chờ nhỏ, chẳng hạn như task.wait(2), ở đầu kịch bản.

Lập trình vòng lặp thứ hai

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

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


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


    -- Đặt lại con đường bằng cách làm cho tất cả các phần có thể đi bộ được 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 phần biến mất, chúng sẽ quay trở lại.

Lặp lại với vòng lặp while

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

  1. Ở cuối kịch bản, tạo một vòng lặp while true do mới. Sau đó, di chuyển cả hai vòng lặp for vào trong vòng lặp while.


    while true do
    -- Làm cho một phần biến mất từ ​​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 tái xuất hiện
    task.wait(1)
    -- Đặt lại con đường bằng cách làm cho tất cả các phần có thể đi bộ được lại
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Kiểm tra rằng một khi tất cả các phần biến mất, chúng sẽ tái xuất hiện.

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

Kịch bản hoàn thành

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Làm cho một phần biến mất từ ​​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 tái xuất hiện
task.wait(1.0)
-- Đặt lại con đường bằng cách làm cho tất cả các phần có thể đi bộ được 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() đứng cho "chỉ mục." ipairs() có thể được sử dụng để nhanh chóng lặp lại một thao tác trên nhiều đối tượng, như, chẳng hạn, một thư mục đầy các phần.

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

  1. Trong Workspace, tạo một thư mục có tên PartsFolder. Thêm bao nhiêu phần tùy thích.

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

  3. Sử dụng GetChildren() để tự động nhận một mảng liệt kê tất cả các đối tượng trong thư mục.


    local partsFolder = workspace.PartsFolder
    -- Nhận được một 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 để lặp qua partsArray và thêm các hạt.

    Kịch bản hoàn thành

    -- Nhận được một mảng liệt kê các phần trong PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- Thêm các 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

Chơi thử và xem các hạt bay lên từ mỗi phần trong thư mục.

Tóm tắt

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

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

©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.