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

Unity'de AssetDatabase.CreateAsset() Metodu ile Varlık Oluşturma

Paylaşan: Unity Eğitim 07 September 2025 4 dakika okuma 120 görüntülenme

Unity oyun geliştirme sürecinde, oyununuz için gereken varlıkları (assets) yönetmek çok önemlidir. Bu varlıklar, dokular, sesler, modeller, ve hatta kendi yazdığınız veri yapıları olabilir. Unity'nin sağladığı AssetDatabase sınıfı, bu varlıkları yönetmek için güçlü araçlar sunar. Bu makalede, AssetDatabase.CreateAsset() metodunu kullanarak yeni varlıklar oluşturmayı detaylı bir şekilde ele alacağız.

AssetDatabase.CreateAsset() Metodu


AssetDatabase.CreateAsset() metodu, Unity'de yeni bir varlığı (asset) proje klasörüne kaydetmenizi sağlar. Bu metod, varlığınızı oluşturduktan sonra onu projede kullanılabilir hale getirir. Metodun kullanımı oldukça basittir, ancak doğru kullanımı için bazı önemli noktalara dikkat etmek gerekir.

Metod Parametreleri



  • asset: Oluşturulacak varlık (asset). Bu, bir ScriptableObject, bir metin dosyası veya başka bir varlık türü olabilir. Öncelikle bu varlığı bellekte oluşturmanız gerekir.

  • path: Varlığın kaydedileceği dosya yolu. Bu yol, Unity projenizin Assets klasörü altında olmalıdır. Yolun sonuna varlığın uzantısını (örneğin, .asset, .txt) eklemeyi unutmayın.


Örnek: ScriptableObject Oluşturma


ScriptableObject'ler, oyun verilerinizi düzenlemek ve yönetmek için kullanışlı bir araçtır. Aşağıdaki örnekte, bir ScriptableObject oluşturup AssetDatabase.CreateAsset() metodu ile kaydedeceğiz:

using UnityEngine;
using UnityEditor;

[CreateAssetMenu(fileName = "New Item", menuName = "Items/Create New Item")]
public class Item : ScriptableObject
{
public string itemName;
public int itemValue;
}

public class CreateItemAsset : EditorWindow
{
[MenuItem("Tools/Create Item Asset")]
public static void ShowWindow()
{
GetWindow("Create Item Asset");
}

void OnGUI()
{
if (GUILayout.Button("Create Item Asset"))
{
string path = EditorUtility.SaveFilePanelInProject("Save Item Asset", "New Item", "asset", "Save Item Asset");
if (path.Length != 0)
{
Item newItem = ScriptableObject.CreateInstance<Item>();
newItem.itemName = "New Item";
newItem.itemValue = 10;
AssetDatabase.CreateAsset(newItem, path);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Debug.Log("Item asset created successfully!");
}
}
}
}


Bu kod, bir "Create Item Asset" menü öğesi ekler. Bu öğeye tıkladığınızda, bir dosya kaydetme penceresi açılır ve yeni bir Item ScriptableObject'i oluşturup seçilen yola kaydeder. AssetDatabase.SaveAssets() ve AssetDatabase.Refresh() metodları, değişiklikleri kaydedip Unity editörünü günceller.

Örnek: Metin Dosyası Oluşturma


AssetDatabase.CreateAsset() metodu, sadece ScriptableObject'ler için değil, diğer varlık türleri için de kullanılabilir. Aşağıdaki örnekte bir metin dosyası oluşturup kaydedeceğiz:

using UnityEditor;
using System.IO;

public class CreateTextAsset : EditorWindow
{
[MenuItem("Tools/Create Text Asset")]
public static void ShowWindow()
{
GetWindow("Create Text Asset");
}

void OnGUI()
{
if (GUILayout.Button("Create Text Asset"))
{
string path = EditorUtility.SaveFilePanelInProject("Save Text Asset", "New Text", "txt", "Save Text Asset");
if (path.Length != 0)
{
string text = "Bu bir örnek metin dosyasıdır.";
File.WriteAllText(path, text);
AssetDatabase.Refresh();
Debug.Log("Text asset created successfully!");
}
}
}
}


Bu örnekte, bir metin dosyası oluşturup içeriğini yazdıktan sonra AssetDatabase.Refresh() metodu ile Unity'nin değişiklikleri görmesini sağlıyoruz.

Önemli Notlar



  • AssetDatabase.CreateAsset() metodu, sadece editör ortamında çalışır. Oyun çalışırken bu metodu kullanamazsınız.

  • Varlığı kaydetmeden önce, varlığın tüm verilerinin doğru bir şekilde ayarlandığından emin olun.

  • Dosya yolunu dikkatlice belirleyin. Yanlış bir yol belirlemek hatalara yol açabilir.

  • Değişiklikleri kaydetmek ve Unity'yi güncellemek için AssetDatabase.SaveAssets() ve AssetDatabase.Refresh() metodlarını kullanın.


Sonuç


AssetDatabase.CreateAsset() metodu, Unity'de yeni varlıklar oluşturmak için güçlü ve esnek bir araçtır. Bu makalede ele aldığımız örnekler, bu metodun nasıl kullanılacağına dair bir temel oluşturur. Kendi özel varlıklarınızı oluşturmak için bu metodu kullanarak oyun geliştirme sürecinizi optimize edebilirsiniz.

🧠 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!