Loop dan Arrays

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Matriksi dapat dikombinasikan dengan loop, seperti saat dan untuk , untuk mengulangi kode yang sama untuk setiap nilai yang diindeks. Misalnya, mengirim setiap pemain di matriks ke tempat baru atau membuat matriksi bagian menangkap api.

Untuk menjelajahi looping melalui array, buat jalan jembatan yang menghilang di mana bagian ditempatkan ke dalam array dan kemudian dibuat untuk menghilang satu per satu.

Looping melalui Array

Untuk proyek, temukan atau buat set tiga bagian untuk memudar. Semua bagian harus diancang.

  1. Buat tiga bagian. Beri nama bagian dalam urutan mereka harus menghilang, Part1, Part2, Part3.

  2. Di ServerScriptService, sisipkan script baru dan buat array untuk menyimpan bagian.


    local pathArray = {
    }
  3. Pada satu baris masing-masing, tulis nama bagian dalam urutan mereka harus menghilang. Menggunakan baris baru untuk setiap nilai membuat lebih mudah dilihat.


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

Menggunakan untuk Loop Dengan Array

Gunakan for loop untuk pergi melalui array dan mengontrol seberapa cepat bagian harus menghilang dalam urutan bagian diindeks dalam array.

  1. Untuk mengontrol frekuensi penghilangan bagian dalam beberapa detik, buat variabel bernama VANISH_RATE . Untuk pengujian, lebih baik tetapnya ke angka kecil.


    local VANISH_RATE = 1.5
    local pathArray = {
    workspace.Part1,
    workspace.Part2,
    workspace.Part3
    }
  2. Buat for loop dengan item mengikuti: Mulai:partIndex = 1, indeks dari nilai pertama dalam array. Akhir:2>#pathArray2>, ukuran dari array itu.


    for partIndex = 1, #pathArray do
    end
  3. Jadi ada kelambatan sebelum bagian menghilang, dalam loop, tambahkan task.wait() menggunakan VANISH_RATE .


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    end
  4. Untuk mendapatkan bagian yang menghilang, buat variabel baru bernama whichPart dan tetapkan partsArray[partIndex] . Kemudian, untuk menghilangkan bagian itu, tetapkan CanCollide property ke false dan 1> Transparency1> ke 1.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
  5. Periksa bagian dari jalan menghilang saat waktu berjalan.

Tips Troubleshoot

Jika jembatan tidak menghilang, periksa masalah yang mungkin di bawah ini: Masalah: Bagian hilang terlalu cepat atau semuanya hilang pada mulai.

  • Tergantung pada seberapa cepat karakter Anda memuat ke dalam pengalaman, bagian pertama mungkin sudah tidak terlihat. Untuk mengatasi ini, tambahkan tunggu kecil, seperti task.wait(2) , di awal script.

Mengkode Loop Kedua

Saat ini, bagian-bagian itu menghilang selamanya. Untuk membuat mereka muncul kembali, buat waktu kedua untuk loop yang akan pergi melalui setiap bagian dan segera membuat setiap bagian berjalan.

  1. Setelah lompatan pertama, tambahkan task.wait() untuk menciptakan penundaan singkat sebelum jalan rute muncul lagi.


    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    task.wait(1)
  2. Pada dirimu sendiri , cobalah untuk mencoba mencoding lintasan yang dapat digunakan kembali dengan mengubah setiap bagian's CanCollide property menjadi benar dan Transparency menjadi 0. Saat selesai, periksa pekerjaan Anda terhadap kode di bawah ini.


    -- Atur ulang jalan dengan membuat semua bagian berjalan lagi
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
  3. Uji proyek untuk mengonfirmasi bahwa setelah semua bagian menghilang, mereka kembali.

Berulang dengan Loop Sementara

Bagian-bagian itu menghilang dan muncul kembali, tetapi hanya sekali. Untuk membuat kode terus diulang, gulir semua kode dalam beberapa waktu.

  1. Pada bagian bawah dari script, buat yang baru sementara benar do loop. Kemudian, pindahkan kedua untuk loop ke dalam while loop.


    while true do
    -- Hapus bagian dari array untuk menghilangkan
    for partIndex = 1, #pathArray do
    task.wait(VANISH_RATE)
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = false
    whichPart.Transparency = 1
    end
    -- Tunggu beberapa detik sebelum membuat jalan itu muncul lagi
    task.wait(1)
    -- Atur ulang jalan dengan membuat semua bagian berjalan lagi
    for partIndex = 1, #pathArray do
    local whichPart = pathArray[partIndex]
    whichPart.CanCollide = true
    whichPart.Transparency = 0
    end
    end
  2. Periksa bahwa setelah semua bagian menghilang, mereka muncul kembali.

Versi proyek yang selesai dapat diunduh.

Skrip yang selesai

local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Hapus bagian dari array untuk menghilangkan
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Tunggu beberapa detik sebelum membuat jalan itu muncul lagi
task.wait(1.0)
-- Atur ulang jalan dengan membuat semua bagian berjalan lagi
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
end

Matrix dan ipairs()

ipairs() digunakan dengan array . The "i" in ipairs() berdiri untuk "indeks." ipairs() dapat digunakan untuk mengulangi operasi pada banyak objek, seperti, katakan, direktori penuh dari bagian.

Ini akan diperlihatkan dengan menambahkan cepat partikel ke seluruh folder bagian.

  1. Di Workspace, buat folder bernama PartsFolder. Tambahkan sebanyak bagian yang Anda suka.

  2. Di ServerScriptService, Buat skrip baru dan referensikan folder.

  3. Gunakan GetChildren() untuk mendapatkan daftar objek di direktori secara otomatis.


    local partsFolder = workspace.PartsFolder
    -- Mendapatkan daftar bagian di PartsFolder
    local partsArray = partsFolder:GetChildren()
  4. Gunakan in ipairs(ArrayToUse) dengan for loop untuk melewati partsArray dan menambahkan partikel.

    Skrip yang selesai

    -- Mendapatkan daftar bagian di PartsFolder
    local partsArray = partsFolder:GetChildren()
    -- Menambahkan partikel ke setiap bagian dalam array
    for index, part in ipairs(partsArray) do
    local particles = Instance.new("ParticleEmitter")
    particles.Parent = part
    end

Mainkan dan tonton partikel mengambang dari setiap bagian dalam folder.

Sintesis

Loop dapat dikombinasikan dengan array untuk bekerja dengan setiap jumlah nilai dengan cepat. Jika Anda ingin memiliki kontrol yang tepat atas apa yang terjadi pada beberapa bagian dan dalam urutan apa, sebuah array harus di-硬化 dengan nilai tertentu.

Untuk bekerja dengan banyak bagian di mana pesanan tidak masuk akal, GetChildren() dapat menciptakan matriksi anak objek. Menggunakan ipairs(), daftar dapat diiterasi cepat tanpa mengetahui ukuran matriksi.