Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Stacker harus melacak kotak yang dibuatnya:

  • Simpan kotak dalam field List<GameObject> privat bernama boxes.
  • 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, misalnya Boxes: 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
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Dasar-Dasar Scripting Unity