Array dapat digabungkan dengan loop, seperti while dan for, untuk mengulangi kode yang sama untuk setiap nilai yang terindeks. Misalnya, memindahkan setiap pemain dalam array ke tempat baru atau membuat array bagian terbakar.
Untuk menjelajahi pengulangan melalui array, buatlah jalur jembatan yang menghilang di mana bagian-bagian ditempatkan ke dalam array dan kemudian dibuat menghilang satu per satu.
Loop melalui array
Untuk proyek ini, temukan atau buat satu set tiga bagian untuk membuatnya menghilang. Bagian-bagian tersebut harus semuanya terikat.
Buat tiga bagian. Nama bagian-bagian tersebut sesuai urutan mereka harus menghilang, Part1, Part2, Part3.
Di ServerScriptService, masukkan skrip baru dan buat array untuk menyimpan bagian-bagian tersebut.
local pathArray = {}Dalam satu baris masing-masing, ketik nama bagian-bagian tersebut sesuai urutan mereka harus menghilang. Menggunakan baris baru untuk setiap nilai membuatnya lebih mudah dibaca.
local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3,}
Gunakan loop for dengan array
Gunakan loop for untuk melalui array dan mengontrol seberapa cepat bagian-bagian tersebut harus menghilang sesuai urutan bagian-bagian yang terindeks dalam array.
Untuk mengontrol seberapa sering sebuah bagian menghilang dalam detik, buat variabel bernama VANISH_RATE. Untuk pengujian, sebaiknya tetap pada angka kecil.
local VANISH_RATE = 1.5local pathArray = {workspace.Part1,workspace.Part2,workspace.Part3}Buat loop for dengan yang berikut: Mulai: partIndex = 1, indeks dari nilai pertama dalam array. Akhir: #pathArray, ukuran dari array tersebut.
for partIndex = 1, #pathArray doendAgar ada jeda sebelum sebuah bagian menghilang, dalam loop, tambahkan task.wait() menggunakan VANISH_RATE.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)endUntuk membuat sebuah bagian menghilang, buat variabel baru bernama whichPart dan setel nilainya sama dengan pathArray[partIndex]. Kemudian, untuk menghilangkan bagian tersebut, setel properti CanCollide menjadi false dan Transparency menjadi 1.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endPeriksa bahwa bagian-bagian dari jalur menghilang seiring waktu.
Tips pemecahan masalah
Jika jembatan tidak menghilang, periksa masalah yang mungkin terjadi di bawah ini:
Masalah: Bagian menghilang terlalu cepat atau semuanya hilang di awal.
- Tergantung pada seberapa cepat karakter Anda dimuat ke dalam permainan, bagian pertama mungkin sudah tidak terlihat. Untuk mengatasi ini, tambahkan jeda kecil, seperti task.wait(2), di awal skrip.
Kode loop kedua
Saat ini, bagian-bagian menghilang selamanya. Untuk membuatnya muncul kembali, buat loop for kedua yang akan melalui setiap bagian dan segera membuat setiap bagian dapat dilalui.
Setelah loop pertama, tambahkan task.wait() untuk membuat jeda singkat sebelum jalur muncul kembali.
for partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1endtask.wait(1)Secara mandiri, coba kode loop for kedua yang membuat jalur dapat digunakan kembali dengan mengubah properti CanCollide setiap bagian menjadi true dan Transparency menjadi 0. Setelah selesai, periksa pekerjaan Anda dengan kode di bawah ini.
-- Reset jalur dengan membuat semua bagian dapat dilalui lagifor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endUji proyek untuk mengonfirmasi bahwa setelah semua bagian menghilang, mereka muncul kembali.
Ulangi dengan loop while
Bagian-bagian menghilang dan muncul kembali, tetapi hanya sekali. Untuk membuat kode terus mengulang, masukkan semua kode ke dalam loop while.
Di bagian bawah skrip, buat loop while true do baru. Kemudian, pindahkan kedua loop for ke dalam loop while.
while true do-- Buat bagian menghilang dari array secara berurutanfor partIndex = 1, #pathArray dotask.wait(VANISH_RATE)local whichPart = pathArray[partIndex]whichPart.CanCollide = falsewhichPart.Transparency = 1end-- Tunggu selama satu detik sebelum membuat jalur muncul kembalitask.wait(1)-- Reset jalur dengan membuat semua bagian dapat dilalui lagifor partIndex = 1, #pathArray dolocal whichPart = pathArray[partIndex]whichPart.CanCollide = truewhichPart.Transparency = 0endendPeriksa bahwa setelah semua bagian menghilang, mereka muncul kembali.
Versi selesai dari proyek dapat diunduh.
local VANISH_RATE = 1.0
local pathArray = {
workspace.Part1,
workspace.Part2,
workspace.Part3,
}
while true do
-- Buat bagian menghilang dari array secara berurutan
for partIndex = 1, #pathArray do
task.wait(VANISH_RATE)
local whichPart = pathArray[partIndex]
whichPart.CanCollide = false
whichPart.Transparency = 1
end
-- Tunggu selama satu detik sebelum membuat jalur muncul kembali
task.wait(1.0)
-- Reset jalur dengan membuat semua bagian dapat dilalui lagi
for partIndex = 1, #pathArray do
local whichPart = pathArray[partIndex]
whichPart.CanCollide = true
whichPart.Transparency = 0
end
endArray dan ipairs()
ipairs() digunakan dengan array. Huruf "i" dalam ipairs() berdiri untuk "indeks." ipairs() dapat digunakan untuk dengan cepat mengulangi operasi pada banyak objek, seperti, katakanlah, folder penuh bagian.
Ini akan ditunjukkan dengan cepat menambahkan partikel ke seluruh folder bagian.
Di Workspace, buat folder bernama PartsFolder. Tambahkan sebanyak mungkin bagian yang Anda suka.
Di ServerScriptService, buat skrip baru dan referensikan folder tersebut.
Gunakan GetChildren() untuk secara otomatis mendapatkan array yang mencantumkan semua objek dalam folder.
local partsFolder = workspace.PartsFolder-- Mendapatkan array yang mencantumkan bagian-bagian dalam PartsFolderlocal partsArray = partsFolder:GetChildren()Gunakan in ipairs(ArrayToUse) dengan loop for untuk melalui partsArray dan menambahkan partikel.
Skrip selesai-- Mendapatkan array yang mencantumkan bagian-bagian dalam PartsFolderlocal partsArray = partsFolder:GetChildren()-- Menambahkan partikel ke setiap bagian dalam arrayfor index, part in ipairs(partsArray) dolocal particles = Instance.new("ParticleEmitter")particles.Parent = partend
Uji permainan dan saksikan partikel melayang dari setiap bagian dalam folder.
Ringkasan
Loop dapat digabungkan dengan array untuk bekerja dengan sejumlah nilai dengan cepat. Jika Anda ingin memiliki kontrol yang tepat atas apa yang terjadi pada beberapa bagian dan dalam urutan apa, array harus dikodekan dengan nilai-nilai tertentu.
Untuk bekerja dengan banyak bagian di mana urutan tidak penting, GetChildren() dapat membuat array dari anak-anak objek. Dengan memanfaatkan ipairs(), daftar dapat dengan cepat diiterasi tanpa mengetahui ukuran array.