Pengantar ke array

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

Struktur data adalah cara pemrogram menyimpan dan mengatur seluruh set data.Di Luau, struktur data dibuat dengan tabel. Tabel dapat menyimpan berapa pun nilai.

Artikel ini mencakup penggunaan array , ketiktabel tertentu, untuk membuat karakter berbicara.

Meja

Tabel adalah jenis data yang dapat menyimpan beberapa nilai.Tidak seperti jenis data lain yang menyimpan nilai tunggal, tabel tidak memiliki ukuran tetap dan dapat menyimpan campuran berbagai jenis nilai.Dengan tabel, Anda dapat menyimpan item di inventaris pemain atau membuat daftar ribuan nama pemain.

Matriks

Ada berbagai jenis tabel.Satu jenis adalah array , yang menyimpan daftar nilai dalam urutan tertentu.Untuk membuat array, buat variabel dan atribusikan braket bergelombang { } .Nilai terpisah di dalam kurung dengan koma seperti di bawah ini:

local myArray = {"item1", "item2", 10, workspace.Part, myVariable}

Buat karakter berbicara

Untuk menjelajahi array, Anda akan bekerja dengan karakter yang tidak dapat dimainkan (NPC) yang, saat diklik, menunjukkan baris dialog yang berbeda.

Proyek ini akan menggunakan model NPC pra-dibuat, yang termasuk skrip parsial dan Detektor Prompt tetapi kurang dialog.

  1. Unduh templat NPC.

  2. Di Explorer, impor NPC dengan mengklik kanan pada Ruang kerja > Masukkan dari file dan pilih file yang diunduh.

Kode matriks dialog

Langkah-langkah ini menggunakan array untuk menyimpan frasa berbeda untuk NPC dikatakan ketika pemain berinteraksi dengannya.

  1. Di dalam Explorer , pergi ke NPC > ProximityPrompt > ChatManager.

  2. Di ChatManager, di mana ditandai dalam skrip, buat array kosong untuk menyimpan opsi dialog.


    -- Melalui siklus melalui dialog obrolan saat prompt digunakan
    local Chat = game:GetService("Chat")
    local prompt = script.Parent
    local npc = prompt.Parent
    local characterParts = npc.CharacterParts
    local head = characterParts.Head
    -- Tambahkan array di sini
    local dialogueArray = {}
    local function speak()
    local dialogue = "I've got one thing to say!"
    Chat:Chat(head, dialogue)
    end
    prompt.Triggered:Connect(speak)
  3. Di dalam kurungan {} dari array baru saja dibuat, ketikkan setidaknya tiga string dialog, dipisahkan oleh koma.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}

Gunakan indeks array

Setiap nilai dalam array diberi nomor index .Indeks ditugaskan ke nilai dalam urutan di mana nilai disimpan.Nilai pertama ada di indeks 1, yang kedua di indeks 2, dan seterusnya.

Beberapa bahasa pemrograman, seperti Java, mulai indeks di 0.

Dalam array baru saja dibuat, "Hi" berada di indeks 1, dan "Goodbye!" berada di indeks 3.

Daftar IsiNilainya
1Hi
2Hari ini adalah hari yang bagus!
3Selamat tinggal!

Gunakan nilai indeks spesifik

Gunakan nilai indeks untuk menugaskan bagian dialog tertentu ke NPC.Untuk menggunakan nilai di indeks tertentu, tambahkan indeks dalam kurungan langsung setelah nama array, seperti dialogueArray[1] .

  1. Ganti nilai string default variabel dialogue dengan indeks 2.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
    local function speak()
    local dialogue = dialogueArray[2]
    Chat:Chat(head, dialogue)
    end
  2. Tes uji dan klik NPC. Nilai array kedua harus muncul di gelembung obrolan. Coba ubah kode untuk menguji setiap nilai di tabel.

Mengubah baris dialog

Ketika pemain berinteraksi dengan NPC, NPC akan selalu mengatakan baris yang sama.Itu membosankan.Sebagai gantinya, gunakan variabel untuk memperbarui nilai indeks mana yang akan digunakan.

Setiap kali pemain berinteraksi dengan NPC, tingkatkan nilai variabel dengan 1 untuk menampilkan baris dialog berikut.

  1. Untuk melacak indeks saat ini, tambahkan variabel baru bernama dialogueIndex . Atur variabel menjadi 1 untuk mulai di awal array.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
    local dialogueIndex = 1
  2. Di speak() , ganti nomor indeks di dialogueArray[2] dengan variabel yang baru saja Anda buat.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    end
  3. Di bagian bawah fungsi, tambahkan 1 ke dialogueIndex. Lain kali speak() dipanggil, dialog akan menampilkan string berikutnya.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex += 1
    end
  4. Tes ulang dan klik NPC untuk melihat setiap string dialog dari array.

Perhatikan ada kesalahan di jendela Keluar setelah skrip mencapai akhir array

Anda akan memperbaikinya di bagian berikutnya sehingga dialog dimulai ulang dari awal setelah menunjukkan string terakhir.

Ukuran array

Anda dapat menggunakan ukuran array untuk mengetahui kapan harus mengatur ulang indeks yang diinginkan ke 1.Temukan ukuran dari array dengan mengetik # , tanpa spasi, sebelum nama array.

Sebagai contoh: #dialogueArray

Periksa ukuran array terhadap nilai variabel saat ini untuk mengetahui kapan saatnya memulai kembali di awal.

Mulai ulang dialog

Gunakan ukuran array untuk memeriksa kapan saatnya untuk berputar kembali ke bagian dialog pertama.

  1. Tambahkan pernyataan if dan periksa apakah dialogueIndex sama dengan #dialogueArray , ukuran total array ini. Jika demikian, maka atur dialogueIndex menjadi 1.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    end
    dialogueIndex += 1
    end
  2. Jika dialogueIndex tidak berada di akhiri, itu masih harus menambahkan 1 ke dialogueIndex . Pindahkan dialogueIndex += 1 di bawah pernyataan else.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
    end
  3. Mainkan dan konfirmasikan bahwa Anda dapat berkeliling dan memulai ulang dialog.

Singkatan

Struktur data adalah cara set data disimpan.Luau menggunakan tabel untuk membuat struktur data.배열 adalah jenis tabel yang dapat menyimpan daftar urutan informasi yang diperintah.Setiap nilai dalam array diberi nomor indeks, mulai dengan indeks 1.

Skrip ini menggunakan array untuk membuat daftar baris dialog yang mungkin untuk Karakter Tidak Bermain (NPC).

Skrip selesai

-- Melalui siklus melalui dialog obrolan saat prompt digunakan
local Chat = game:GetService("Chat")
local prompt = script.Parent
local npc = prompt.Parent
local characterParts = npc.CharacterParts
local head = characterParts.Head
-- Tambahkan array di sini
local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
local dialogueIndex = 1
local function speak()
local dialogue = dialogueArray[dialogueIndex]
Chat:Chat(head, dialogue)
dialogueIndex = if dialogueIndex == #dialogueArray then 1 else dialogueIndex + 1
end
prompt.Triggered:Connect(speak)

Tip pemecahan masalah

Jika karakter tidak melalui array dialog, coba tips penyelesaian masalah berikut.

  • Periksa pernyataan if bahwa dialogueIndex dikembalikan ke 1. Dalam pernyataan else, periksa bahwa dialogueIndex memiliki 1 ditambahkan ke dirinya sendiri.
  • Saat mendapatkan ukuran array, pastikan tidak ada spasi setelah # di #dialogueArray.

Tantangan opsional

Coba salah satu tantangan opsional di bawah ini.

  • Kodekan skrip sehingga dialog NPC mundur melalui array.DialogIndex harus dimulai di array dan dikurangi setiap kali bukannya ditambahkan.
  • Alih-alih menampilkan dialog dalam urutan, memiliki NPC menampilkan baris dialog acak setiap kali menggunakan Random.new() .Skrip sampel disertakan di bawah ini untuk referensi

local randomGenerator = Random.new()
-- Menampilkan dialog baru setiap kali NPC diklik
local function speak()
local randomIndex = randomGenerator:NextInteger(1, #dialogueArray)
local dialogue = dialogueArray[randomIndex]
Chat:Chat(head, dialogue)
end