Menu
CoddyTech

Referanslar Bulmaktan İyidir

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

Bir betik başka bir nesneye dört yolla erişebilir: Inspector'da ayarlanan bir alan, ada göre GameObject.Find, etiket araması veya türe göre FindAnyObjectByType. Başlangıçtan itibaren sahnede bulunan bir nesne için Unity kodu, üç nedenden dolayı Inspector alanını kullanır:

  • Hız. Başlamadan önce başvuru doldurulur. Her arama sahnedeki nesneleri tarar ve Update() içindeki bir arama bunu her karede yapar.
  • Güvenlik. Bir dizedeki ad, biri nesneyi yeniden adlandırdığında bozulur: Find null döndürür ve hata daha sonra, onu kullanan satırda ortaya çıkar. Boş bir Inspector alanı, alanın ve betiğin adını belirten UnassignedReferenceException hatasına neden olur.
  • Açıklık. Inspector, bir betiğin nelere bağlı olduğunu gösterir. Bir Find çağrısı bunu kodun içine gizler.
// Inspector'da bir kez ayarlanır: arama yapılmaz ve yeniden adlandırma hiçbir şeyi değiştirmez
[SerializeField] private Transform door;

// her karede aranır ve kapı yeniden adlandırıldıktan sonra null olur
void Update()
{
    Transform d = GameObject.Find("Door").transform;
}

Aramaların kullanılması gereken yerler vardır: oyun çalışırken oluşturulanlar gibi yalnızca oyun başladıktan sonra var olan nesneler ve herhangi bir sahnede çalışması gereken betikler. Bu durumda bile Start() içinde bir kez arama yapıp sonucu bir alanda saklayın.

Kendin dene

Bu ders bir kod alıştırması içermiyor.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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