Hiç private olabilecek bir değişkeni sırf sürükle bırak ile değer verildiği için public yaptığınız oldu mu? Veya yanlışlıkla aynı scripti bir nesneye iki kez attığınız? Rigidbody kullanan bir scripti Rigidbody olmayan bir nesneye atıp hata aldığınız olmuştur herhalde. Tüm bu ve daha fazlasını düzeltmenin bir yolu var. Unity Attributes..
Unity Attributes, kodlarınızı özelleştirmeye yarayan bir özelliktir. Bu şekilde yazdığınız kodlarda, dolayısıyla componentlerde istediğiniz ayarlamaları yaparak projelerinizi daha kolay bitirebilirsiniz. Aşağıda en çok kullandığım, kullanışlı birkaç attribute'yi gösterdim.
Attribute'ler, [Attribute] veya [Attribute(parametre1, parametre2)] şeklinde yazılır. Birden fazla attribute yazmak için [Attribute, Attribute] şeklinde yazabilirsiniz. Attributeler, bir değişken ile ilgiliyse değişkenin üst satırına, o component ile ilgiliyse class tanımlamasının üst satırına yazılır.
Attribute kodu | Açıklama | Sonuç |
Tooltip ("Değişken ile ilgili açıklama") |
İlgili değişkene açıklama getirmeye yarar. Component'de değişkenin üzerine fare ile geldiğinizde bu yazı çıkar. | ![]() |
Range (0,20) |
Sayı değişkenlere slider yardımıyla değer vermeye yarar. | ![]() |
Header ("Hız Ayarları") |
Component'de değişkenlere başlık koymaya yarar. | ![]() |
SerializeField |
Private bile olsa değişkenin component'den görülebilmesini sağlar. | ![]() |
HideInInspector |
Public değişkenlerin component'de görünmemesini sağlar. | ![]() |
RequireComponent(typeof(Rigidbody2d)) |
Yazdığınız component bir nesnede yoksa o nesneye bu component'i eklemenizi engeller. Component ile ilgili olduğundan, class'dan hemen önce yazılması gerekir. | ![]() |
DisallowMultipleComponent |
Bir nesneye aynı script'i tekrar koymanızı engeller. Class tanımlamasından önce yazılması gerekir. | ![]() |
Aşağıdaki kod ile, bu yazının ana resmindeki görünümü elde edersiniz.
[SerializeField]
private GameObject privateDegisken;
[Header ("Güç Seçenekleri:"), Range (0, 20)]
public int hiz;
[Range (0f, 5.0ff)]
public float donmeGucu;