Menu
CoddyTech

Nesne Listeleri

Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 65 / 85.

Bir dizinin uzunluğu sabittir ve oluşturulurken belirlenir. Bir nesne oluşturucusu kaç nesne oluşturacağını önceden bilemez, bu yüzden onları büyüyebilen C# dizisi olan List<T> içinde tutar. System.Collections.Generic içinde yer alır ve T, tuttuğu öğenin türüdür. Bu çeşme oluşturduğu her parayı hatırlar:

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 bir öğeyi sona ekler, Count ise kaç tane olduğunu söyler; dizilerde bunun karşılığı Length olur. Okuma, dizilerdeki gibidir: coins[0] ilk paradır ve foreach (GameObject c in coins) hepsini sırayla ziyaret eder. coins.Remove(coin) o öğeyi listeden çıkarır, coins.RemoveAt(0) ise ilk öğeyi çıkarır; ondan sonraki öğeler bir sıra öne kayar.

Listenin kendisi new ile oluşturulmalıdır. List<GameObject> coins; olarak yazılan bir alan null değerini tutar ve ilk Add çağrısı NullReferenceException hatasıyla durur.

challenge icon

Görev

Orta

Her tıklama listeye bir kutu eklesin.

  1. using System.Collections.Generic; yönergesini ve List<GameObject> boxes = new List<GameObject>(); alanını ekle.
  2. Tıklandığında, boxPrefab öğesini transform.position + new Vector3(boxes.Count * 1.5f, 0, 0) konumunda, döndürme olmadan oluştur ve boxes listesine ekle.
  3. "Boxes: " + boxes.Count ifadesini günlüğe yazdır.

“Oyna” düğmesine bas ve üç kez tıkla: Üç kutu yan yana durur. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class BoxStacker : MonoBehaviour
{
    public GameObject boxPrefab;
    // boxes: özel bir List<GameObject>

    void Update()
    {
        // Click: bir kutu oluştur, listedeki her kutu için 1.5 daha sağa yerleştir, kutuyu listeye ekle, sayıyı logla
    }
}

Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground