Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
Unity Dersleri

Unity'de EditorGUILayout.ObjectField ile Nesne Seçimi

Paylaşan: Unity Eğitim 11 September 2025 3 dakika okuma 10 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity editöründe özelleştirilmiş arayüzler oluşturmak için son derece kullanışlı bir fonksiyon olan EditorGUILayout.ObjectField'ı inceleyeceğiz. Bu fonksiyon, kullanıcıların Unity sahnesindeki veya projedeki nesneleri doğrudan editör penceresinden seçmelerini sağlar. Bu, oyununuzun çeşitli özelliklerini özelleştirmek ve yönetmek için güçlü bir araçtır.

EditorGUILayout.ObjectField Nedir?


EditorGUILayout.ObjectField, Unity'nin EditorGUILayout sınıfının bir üyesidir. Bu fonksiyon, editör penceresine bir nesne seçme alanı ekler. Kullanıcı bu alana tıkladığında, Unity'nin yerleşik nesne seçici penceresi açılır ve kullanıcı, mevcut sahnedeki veya projedeki herhangi bir nesneyi seçebilir. Seçilen nesne, ObjectField'a atanır ve kodunuzda kullanılabilir.

Temel Kullanım


EditorGUILayout.ObjectField'ın en temel kullanımı oldukça basittir. Aşağıdaki kod, bir GameObject seçmek için bir ObjectField oluşturur:
public GameObject selectedObject;

private void OnGUI() {
selectedObject = (GameObject)EditorGUILayout.ObjectField("Seçilen Nesne:", selectedObject, typeof(GameObject), true);
}


Bu kodda, "Seçilen Nesne:", ObjectField'ın etiketini belirtir. selectedObject, seçilen nesneyi saklamak için kullanılan bir değişkendir. typeof(GameObject), seçilebilecek nesne türünü belirtir. true parametresi, kullanıcıların yeni bir nesne oluşturmasına izin verir.

Gelişmiş Kullanım


EditorGUILayout.ObjectField'ın gücü, sadece GameObject'ler ile sınırlı değildir. ScriptableObject'lar, Texture'lar, Material'lar ve daha birçok farklı nesne türü için kullanılabilir. Örneğin, bir Material seçmek için:
public Material selectedMaterial;

private void OnGUI() {
selectedMaterial = (Material)EditorGUILayout.ObjectField("Seçilen Materyal:", selectedMaterial, typeof(Material), false);
}


Burada, false parametresi, kullanıcıların yeni bir materyal oluşturmasına izin vermez.

Özellikler



  • Label: ObjectField'ın yanında gösterilecek etiket metnini belirtir.

  • Object: Seçilen nesneyi tutan değişken.

  • Type: Seçilebilecek nesne türünü belirtir.

  • AllowSceneObjects: Sahnedeki nesnelerin seçilip seçilemeyeceğini belirtir (true veya false).


Örnek Senaryo: Oyun İçinde Nesne Değiştirme


Diyelim ki oyununuzda, oyuncunun farklı silahlar kullanmasını istiyorsunuz. EditorGUILayout.ObjectField kullanarak, editörden hangi silahların kullanılacağını seçebilirsiniz:

[System.Serializable]
public class Weapon {
public string weaponName;
public GameObject weaponPrefab;
}

public class WeaponManager : MonoBehaviour {
public Weapon[] weapons;

private void OnGUI() {
for (int i = 0; i < weapons.Length; i++) {
weapons[i].weaponPrefab = (GameObject)EditorGUILayout.ObjectField("Silahları Seç:", weapons[i].weaponPrefab, typeof(GameObject), true);
}
}
}


Bu kod, her bir silah için bir ObjectField oluşturur ve kullanıcıların her bir silah için bir GameObject seçmesini sağlar. Bu GameObject'ler, oyun sırasında silahların örneklerini oluşturmak için kullanılır.

Bu yazıda, EditorGUILayout.ObjectField'ın temel ve gelişmiş kullanımını inceledik. Bu fonksiyon, Unity editöründe özelleştirilmiş arayüzler oluşturmak için güçlü bir araçtır. Farklı nesne türleri ile denemeler yaparak ve kendi projelerinizde kullanarak yeteneklerinizi daha da geliştirebilirsiniz.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!