Menu
CoddyTech

Daftar Objek

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 65 dari 85.

array memiliki panjang tetap yang ditentukan saat dibuat. Spawner tidak tahu sebelumnya berapa banyak object yang akan dibuat, jadi spawner menyimpannya dalam List<T>: array C# yang dapat bertambah. List ini berada di System.Collections.Generic, dan T adalah tipe item yang disimpan. 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 membacanya sama seperti 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 setelahnya bergeser satu tempat ke depan.

List itu sendiri harus dibuat dengan new. Field yang ditulis sebagai List<GameObject> coins; menyimpan null, dan Add pertama akan berhenti dengan NullReferenceException.

challenge icon

Tantangan

Sedang

Buat setiap klik menambahkan sebuah box ke list.

  1. Tambahkan using System.Collections.Generic; dan field List<GameObject> boxes = new List<GameObject>();.
  2. Saat diklik, munculkan boxPrefab di transform.position + new Vector3(boxes.Count * 1.5f, 0, 0), tanpa rotasi, lalu tambahkan ke boxes.
  3. Catat "Boxes: " + boxes.Count.

Tekan tombol “Main” dan klik tiga kali: tiga box berdiri berjejer. Lalu tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class BoxStacker : MonoBehaviour
{
    public GameObject boxPrefab;
    // boxes: List<GameObject> privat

    void Update()
    {
        // Klik: buat sebuah box, posisikan 1.5 lebih ke kanan untuk setiap box dalam list, tambahkan ke list, lalu catat jumlahnya
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity

Latihan sendiri: Playground Unity