Menu
CoddyTech

List di Inspector

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 16 dari 50.

Daftar entri [System.Serializable] adalah tabel yang kamu isi di Inspector. Penjaga ini melewati rute yang terdiri dari beberapa titik henti dan menunggu di setiap titik selama entri tersebut menyatakan:

[System.Serializable]
public class Stop
{
    public Transform point;
    public float wait = 1f;
}

public class Patrol : MonoBehaviour
{
    public float speed = 3f;
    public List<Stop> stops;
    private int current;
    private float waited;

    void Update()
    {
        Stop stop = stops[current];
        transform.position = Vector3.MoveTowards(transform.position, stop.point.position, speed * Time.deltaTime);
        if (transform.position != stop.point.position) return;
        waited += Time.deltaTime;
        if (waited >= stop.wait)
        {
            waited = 0f;
            current = (current + 1) % stops.Count;
        }
    }
}

Inspector menampilkan Stops beserta jumlahnya dan satu panel lipat untuk setiap entri, Element 0, Element 1, dan seterusnya. Setiap entri memiliki Point dan Wait. Tombol + menambahkan entri, tombol minus menghapus entri yang dipilih, dan pegangan di sebelah kiri baris memungkinkanmu menyeretnya ke posisi baru dalam rute. Kode membaca daftar seperti biasa: stops.Count entri, stops[current].point, dan (current + 1) % stops.Count kembali ke titik henti pertama setelah titik henti terakhir. Perancang level dapat memberi satu penjaga tiga titik henti dan penjaga lain sepuluh titik henti tanpa mengubah skrip.

Sebuah array, public Stop[] stops;, ditampilkan dengan cara yang sama. Tombol + di Unity menyalin entri terakhir, jadi titik henti baru dimulai dengan point dan wait yang sama seperti entri di atasnya. Unity tidak menampilkan atau menyimpan daftar berisi daftar, seperti List<List<Stop>>, atau Dictionary. Sebagai gantinya, bungkus daftar bagian dalam dengan class [Serializable], seperti Route yang memiliki List<Stop> sendiri, lalu simpan daftar berisi class tersebut.

challenge icon

Tantangan

Mudah

Mira dan Tom terjebak di jembatan yang rusak. Buat kotak dialog di HUD dalam Dialogue.cs. Scene menghubungkan box, speakerText, dan lineText, serta sudah menyiapkan percakapan untuk list bernama lines.

  • Deklarasikan class Line dengan dua string publik, speaker dan text, yang dapat ditampilkan oleh Inspector, lalu beri Dialogue List<Line> publik bernama lines.
  • Saat dimulai, kotak menampilkan baris pertama: speakernya di speakerText dan teksnya di lineText.
  • Setiap kali Space ditekan, tampilkan baris berikutnya. Percakapan dapat memiliki berapa pun jumlah baris, jadi gunakan jumlah item dalam list.
  • Menekan Space pada baris terakhir menyembunyikan kotak dan mencatat Dialogue over. Setelah itu, Space tidak melakukan apa pun.

Tekan Play, baca percakapan dengan Space, lalu Check.

Coba sendiri

using UnityEngine;
using TMPro;

public class Dialogue : MonoBehaviour
{
    public GameObject box;
    public TMP_Text speakerText;
    public TMP_Text lineText;

    void Start()
    {
        // tampilkan baris pertama
    }

    void Update()
    {
        // Space: baris berikutnya, atau akhir percakapan
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Arsitektur Game di Unity