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.
Tantangan
MudahMira 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
Linedengan dua string publik,speakerdantext, yang dapat ditampilkan oleh Inspector, lalu beri DialogueList<Line>publik bernamalines. - Saat dimulai, kotak menampilkan baris pertama: speakernya di
speakerTextdan teksnya dilineText. - 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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja SamaRingkasan: Turret Modular4Data Terserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRingkasan: Tabel Loot5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaGelombang sebagai DataUlasan: database Item8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearest