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.
Görev
OrtaHer tıklama listeye bir kutu eklesin.
using System.Collections.Generic;yönergesini veList<GameObject> boxes = new List<GameObject>();alanını ekle.- Tıklandığında,
boxPrefaböğesinitransform.position + new Vector3(boxes.Count * 1.5f, 0, 0)konumunda, döndürme olmadan oluştur veboxeslistesine ekle. "Boxes: " + boxes.Countifadesini 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
1Unity'de C# Temelleri
Merhaba, UnityDeğişkenlerOndalık Sayılar için f GerekirKonsolda MetinHatırlayan DeğişkenlerEğer ve DeğilseSayıları KarşılaştırmaTekrar: Coin Collector4Girdi
Basılı, Basılı Tutulmuş, BırakılmışEksenlerAdlandırılmış DüğmelerFare DüğmeleriTekrar: Zıplama Yükleme7Döngüler ve Metotlar
for ile tekrarlamaİç içe döngülerBir metot yazmaYanıt veren metotlarDizilerTekrar: Merdiven10Nesneleri Bulma
Ada Göre BulEtiketlerTüre Göre BulReferanslar Bulmaktan İyidirUnity'de NullÖzet: En Yakın Madeni Para13Proje: Bloklardan Kaç
KoşucuGökyüzünden Bloklar5Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir Struct'tırTekrar: Drone Pilotu8GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı11Prefab'ler ve Nesne Oluşturma
Prefab'ler ve InstantiateZamanlayıcıyla Nesne OluşturmaIzgarada Nesne OluşturmaNesne ListeleriEn Yeniyi Geri AlmaYok EtmeRastgele Nesne OluşturmaTekrar: Havai Fişekler3Inspector
Inspector AlanlarıSerializeFieldOndalıklı Sayılar ve MathfInspector ÖzellikleriTekrar: Asansör6Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarBayrağı Göndere ÇekÖlçekNesnelere BakBir Noktaya Doğru Hareket EtTekrar: Yörüngedeki Ay9Proje: Yıldızı Yakala
YakalayıcıDüşen Bir YıldızKendi başına pratik yap: Unity playground