list object
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 51 dari 67.
array memiliki panjang tetap yang ditentukan saat dibuat. Spawner tidak tahu sebelumnya berapa banyak object yang akan dibuatnya, jadi spawner menyimpannya dalam List<T>: array C# yang ukurannya bertambah. List ini berada di System.Collections.Generic, dan T adalah tipe item yang disimpannya. Air mancur ini mengingat setiap koin yang dibuatnya:
using System.Collections.Generic;
using UnityEngine;
public class CoinFountain : MonoBehaviour
{
public GameObject coinPrefab;
List<GameObject> coins = new List<GameObject>();
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject coin = Instantiate(coinPrefab, transform.position, Quaternion.identity);
coins.Add(coin);
Debug.Log(coins.Count + " coins");
}
}
}Add menambahkan item di bagian akhir, dan Count menunjukkan jumlah item, sedangkan array menggunakan Length. Cara membaca item sama seperti pada array: coins[0] adalah koin pertama, dan foreach (GameObject c in coins) mengunjungi semuanya. coins.Remove(coin) menghapus item tersebut, sedangkan coins.RemoveAt(0) menghapus item pertama; item-item setelahnya bergeser satu tempat ke depan.
List itu sendiri harus dibuat dengan new. Field yang ditulis sebagai List<GameObject> coins; menyimpan null, dan pemanggilan Add pertama akan berhenti dengan NullReferenceException.
Tantangan
SedangStacker harus melacak kotak yang dibuatnya:
- Simpan kotak dalam field
List<GameObject>privat bernamaboxes. - Setiap klik membuat kotak tanpa rotasi dan menambahkannya ke list. Kotak diletakkan di posisi stacker ditambah 1.5 pada sumbu x untuk setiap kotak yang sudah ada di list: kotak pertama berada di posisi stacker, berikutnya 1.5 ke kanan, dan seterusnya.
- Tombol Space mengambil kembali kotak terbaru: sembunyikan dengan
SetActive(false)dan hapus dari list. Jika tidak ada kotak, tombol Space tidak melakukan apa pun. - Setelah setiap perubahan pada list, catat
Boxes:dan jumlahnya, misalnyaBoxes: 3.
Tekan Play, klik dan tekan Space, lalu Check.
Coba sendiri
using UnityEngine;
public class BoxStacker : MonoBehaviour
{
public GameObject boxPrefab;
// boxes: List<GameObject> privat
void Update()
{
// Click: buat box baru, posisikan 1.5 lebih ke kanan untuk setiap box dalam list, lalu tambahkan ke list
// Space: sembunyikan box terbaru dan hapus dari list
// Setelah setiap perubahan, catat "Boxes: " dan jumlah box
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar Scripting Unity
1Skrip Pertamamu
Halo, UnityLetakkan KubusBergerak di Setiap FrameBerputar Setiap DetikKendalikan dengan TombolRingkasan: Kendarai Kubus4Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak antara BendaVector3 adalah StructRingkasan: Pilot Drone7Proyek: Tangkap Bintang
Si PenangkapBintang Jatuh5Transformasi dan Hierarki
Objek Induk dan AnakSkalaMenghadap ke ObjekBergerak Menuju TitikRangkuman: Bulan yang Mengorbit6GameObject dan Komponen
Referensi di InspectorMendapatkan KomponenKomponen yang HilangMenambahkan KomponenRequireComponentTampilkan dan SembunyikanRangkuman: Sakelar Lampu9Prefab dan Pemunculan
Prefab dan InstantiateMunculkan dengan TimerMunculkan dalam Kisilist objectHancurkanPemunculan AcakRingkasan: Kembang Api