CodeBlanks Logo Icon CodeBlanks

ItemData ScriptableObject

ScriptableObject ile öğe verisi tanımlamayı öğrenirsin.

ScriptableObject nedir?

ScriptableObject, oyun verisini asset olarak saklayan bir sınıf türüdür. Sahneye eklenmesi gerekmez; proje dosyası olarak durur ve istenildiğinde kullanılır. Öğe bilgileri gibi tekrar eden veriler için idealdir.

using UnityEngine;

[CreateAssetMenu(fileName = "YeniOge", menuName = "Envanter/Oge")]
public class ItemData : ScriptableObject
{
    public string ogeAdi;
}

Bu sınıf artık proje penceresinden oluşturulabilir.

ItemData ve asset

ItemData, bir öğeye ait tüm bilgiyi tutar: adı, türü, yığın limiti. Bu sınıf bir ScriptableObject olduğundan her öğe için ayrı bir asset dosyası oluşturulur. Böylece aynı veri birçok yerde tekrar kullanılabilir.

oge.ogeAdi = "Kilic";
oge.yiginLimiti = 1;

Asset dosyaları Inspector üzerinden kolayca düzenlenir.

Uygulama Öğe verisi oluştur

OgeVerisi sınıfında string ogeAdi alanını "Kilic" ve int yiginLimiti alanını 5 değerleriyle tanımla. Start metodu içinde Debug.Log ile "Oge: ", ogeAdi, " Limit: " ve yiginLimiti parçalarını birleştirerek yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class OgeVerisi : MonoBehaviour
{
    // string ogeAdi alanini "Kilic", int yiginLimiti alanini 5 degeriyle tanimla

    void Start()
    {
        // "Oge: " + ogeAdi + " Limit: " + yiginLimiti biciminde yazdir
    }
}

Örnek çözüm

Player.cs
using UnityEngine;

public class OgeVerisi : MonoBehaviour
{
    string ogeAdi = "Kilic";
    int yiginLimiti = 5;

    void Start()
    {
        Debug.Log("Oge: " + ogeAdi + " Limit: " + yiginLimiti);
    }
}

Beklenen çıktı

Oge: Kilic Limit: 5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 ScriptableObject'ın ayırıcı özelliği nedir?

  • Sahneye eklenmesi gerekir
  • Işık hesaplamalarını hızlandırır
  • Yalnızca arayüz oluşturur
  • Veriyi asset olarak saklar, sahneye eklenmez Doğru cevap

Açıklama: ScriptableObject sahne nesnesi değil, proje dosyasıdır; bu yüzden tekrar kullanılabilir verileri taşır.

2 ItemData sınıfını türet

Soru
using UnityEngine;

public class ItemData : ____
{
    public string ogeAdi;
}
Cevap
using UnityEngine;

public class ItemData : ScriptableObject
{
    public string ogeAdi;
}

Açıklama: ItemData bir veri sınıfı olduğu için ScriptableObject'tan türetilir; MonoBehaviour'dan türetilmez.

3 ScriptableObject terimleri

Kavram Anlamı
ScriptableObject Veri saklayan sınıf türü
Asset Proje dosyası
ItemData Öğe bilgisini tutan sınıf
CreateAssetMenu Yeni asset oluşturma menüsü

İleri seviye bölümündeki tüm dersler