Apa Itu Matriks?

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

Struktur data adalah cara pengkode menyimpan dan mengatur seluruh set data. Di Lua, struktur data dibuat dengan tabel. Tabel dapat menampung berapa pun jumlah nilai.

Artikel ini mencakup penggunaan array , jenis tabel ketik, untuk membuat karakter yang berbicara.

Tabel

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

Matriks

Ada beberapa jenis tabel. Salah satu jenis adalah array, yang menyimpan daftar nilai dalam urutan tertentu. Untuk membuat array, buat variabel dan asignya curly brackets { } . Separate nilai dalam brackets dengan koma seperti di bawah ini:

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

Membuat Karakter Berbicara

Untuk menjelajahi matriks, Anda akan bekerja dengan karakter non-playable (NPC) yang, ketika diklik, menunjukkan baris dialog yang berbeda.

Proyek ini akan menggunakan model NPC pra-dibuat, yang termasuk script bagian dan Detektor Prompt tetapi kekurangan dialog.

  1. Unduh template NPC.

  2. Di Explorer, impor NPC dengan menyetel ulang tombol kanan pada Workspace > Import dari File dan pilih file yang diunduh.

Mengkode Matriks R대화

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

  1. Dalam Explorer , pergi ke NPC > ProximityPrompt > ChatManager.

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


    -- 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. Dalam huruf {} dari array baru saja dibuat, tulis setidaknya tiga string dialog, dibedakan oleh koma.


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

Menggunakan Indeks Arrays

Setiap nilai dalam array diberi nomor index . Indeks diberikan kepada nilai dalam urutan di mana nilai disimpan. Nilai pertama adalah di indeks 1, nilai kedua di indeks 2, dan seterusnya.

Beberapa bahasa pemrograman, seperti Java, memulai indeks pada 0.

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

IndeksNilai
1Halo
2Hari ini adalah hari yang indah!
3Selamat tinggal!

MenggunakanNilai Indeks Khusus

Gunakan nilai indeks untuk menetapkan potongan dialog tertentu ke NPC. Untuk menggunakan nilai di indeks tertentu, tambahkan indeks di braket langsung setelah nama array, seperti dialogueArray[1] .

  1. Ganti nilai dialogue variabel dengan nilai indeks 2.


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

Mengubah Garis Dialog

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

Setiap kali seorang pemain berinteraksi dengan NPC, tingkatkan nilai variabel sebesar 1 untuk menunjukkan garis dialog berikutnya.

  1. Untuk melacak indeks saat ini, tambahkan variabel baru bernama dialogueIndex . Tetapkan variabel ke 1 untuk dimulai di awal daftar.


    local dialogueArray = {"Hi!", "Do I know you?", "Goodbye!"}
    local dialogueIndex = 1
  2. Dalam 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. Pada bagian bawah fungsi, tambahkan 1 untuk 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. Mainkan dan klik NPC untuk melihat setiap string dialog dari array.

Perhatikan ada kesalahan di Jendela Keluar setelah script mencapai akhir dari array.

Anda akan memperbaiki ini di bagian berikutnya sehingga dialog dimulai dari awal setelah menunjukkan string terakhir.

Ukuran Matriks

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

Sebagai contoh: #dialogueArray

Periksa ukuran matriksnya terhadap nilai variabel saat ini untuk mengetahui kapan waktunya untuk memulai kembali di awal.

Mengakhiri Dialog

Gunakan ukuran array untuk memeriksa kapan waktunya untuk siklus kembali ke bagian pertama dari dialog.

  1. Tambahkan if statement dan periksa apakah dialogueIndex Equals #dialogueArray , total ukuran array ini. Jika ya, maka tetapkan dialogueIndex ke 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 di akhiri, itu masih harus menambahkan 1 ke dialogueIndex . Pindahkan dialogueIndex += 1 di bawah pernyataan lain.


    local function speak()
    local dialogue = dialogueArray[dialogueIndex]
    Chat:Chat(head, dialogue)
    if dialogueIndex == #dialogueArray then
    dialogueIndex = 1
    else
    dialogueIndex += 1
    end
    end
  3. Mainkan dan konfirmasi bahwa Anda dapat berjalan melalui dan memulihkan dialog.

Sintesis

Data struktur adalah cara set data di penyimpanan. Lua menggunakan tabel untuk membuat struktur data. Arrays adalah jenis tabel yang dapat menyimpan daftar urutan informasi. Setiap nilai dalam array diberi nomor indeks, dimulai dengan indeks 1.

Skrip ini menggunakan matriks untuk membuat daftar garis dialog yang mungkin untuk Karakter Non-Playable (NPC).

Skrip yang selesai

-- 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)
if dialogueIndex == #dialogueArray then
dialogueIndex = 1
else
dialogueIndex += 1
end
end
prompt.Triggered:Connect(speak)

Tips Troubleshoot

Jika karakter tidak pergi melalui array dialog, coba tips berikut ini.

  • Periksa jika pernyataan bahwa dialogueIndex dikembalikan ke 1. Dalam pernyataan else, periksa bahwa dialogueIndex telah 1 ditambahkan ke dirinya sendiri.
  • Ketika mendapatkan ukuran array, pastikan ada ruang setelah # di #dialogueArray .

Tantangan Opsional

Coba salah satu tantangan op션 di bawah ini.

  • Kode script sehingga dialog NPC berjalan mundur melalui array. DialogIndex harus dimulai di array dan mengurangi setiap kali bukan menambahkan.
  • Alih-alih menunjukkan dialog dalam urutan, NPC menunjukkan garis dialog acak setiap kali menggunakan Random.new() . Sebuah script contoh di included di bawah ini untuk mengacu

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