Unity Değişken Attributeleri ile Inspector Özelleştirme

ücretsiz unity eğitim serisi

Unity motorunu daha iyi kullanmak veya daha iyi hissetmek istediğinizde kullanacağınız bir özellik olan Attribute’leri anlatacağız.

Header Attribute

Editörde düzenleyeceğiniz değişkenler için anlamlı başlıklar oluşturmak için Header Attribute kullanılabilir. Ayrıca değişkenleri gruplara da ayırmak için iyi bir yöntemdir.

C# Kod Parçası:

[Header("Karakter Özellikleri")]
public int boy;
public int kilo;

Inspector Penceresi:

Tooltip Attribute

Şimdi kodunuz bir başkası tarafından kullanıldığında işe yarayacak bir özellikten bahsedeceğim. Çok çok iyi hafızanız yoksa sizin için de faydalı olabilir. Tooltip Attribute bir değişkenin ne işe yaradığını açıklar. Inspector penceresinde değişkenin üstüne gelindiğinde ilgili bilgi gözükür.

C# Kod Parçası:

[Tooltip("Cm cinsinden belirtiniz.")]
public int boy;

Inspector Penceresi:

SerializeField Attribute

Büyük projelerde karşınıza çıkabilecek bir başka Attribute ise SerializeField. Bildiğiniz üzere public değişkenler Unity Editör’de görünür şekildeler. Peki ya private bir değişkeni editör’de görünür yapmak istersem? Tam bu noktada SerializeField yardıma koşuyor.

C# Kod Parçası:

[SerializeField]
private Color renk;

Inspector Penceresi:

Space Attribute

Karmaşıklığı önlemeyi ve anlaşılırlığı arttırmayı sağlayan bir başka özellik olan Space Attribute ile değerler arasında boşluk bırakabiliriz.

C# Kod Parçası:

[Header("Karakter Özellikleri")]
[Space]
[SerializeField]
private Color gozRengi;
[Space]
[Tooltip("Cm cinsinden belirtiniz.")]
public int boy;
[Space]
public int kilo;

Inspector Penceresi:

Range Attribute

Sayısal bir ifadenin alabileceği minimum ve maksimum değerleri belirlemek için Range özelliği kullanılabilir.

C# Kod Parçası:

[Range(100, 250)]
public int boy;

Inspector Penceresi:

HideInInspector Attribute

Public bir değişkenin Unity Inspector penceresinde görünmesini istemiyorsak HideInInspector Attribute kullanılabilir.

C# Kod Parçası:

[HideInInspector]
public int gizliDegisken;

ContextMenuItem Attribute

Son olarak bir değişkene sağ tıkladığında ContextMenuItem Attribute sayesinde bir menü açılmasını sağlayabiliriz. Ayrıca menü elemanlarına birer fonksiyon atayabiliriz.

[ContextMenuItem("Random Sayı Oluştur", "RandomSayiOlustur")]
public float randomSayi;

void RandomSayiOlustur()
{
    randomSayi = Random.Range(0.0f, 5.0f);
}

Inspector Penceresi:

 

Son olarak tüm kodları ve oluşan görüntüyü tek parça halinde aşağıdan görebilirsiniz.

C# Kod Parçası:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Attributes : MonoBehaviour
{
    [Header("Karakter Özellikleri")]
    [Space]

    [SerializeField]
    private Color gozRengi;
    [Space]

    [Tooltip("Cm cinsinden belirtiniz.")]
    [Range(100, 250)]
    public int boy;

    [Space]
    public int kilo;

    [HideInInspector]
    public int gizliDegisken;

    [ContextMenuItem("Random Sayı Oluştur", "RandomSayiOlustur")]
    public float randomSayi;

    void RandomSayiOlustur()
    {
        randomSayi = Random.Range(0.0f, 5.0f);
    }
}

Inspector Penceresi: