ItemData ScriptableObject
- Oyun Geliştirme kursu
- İleri seviye
- Ders 26/71
- 4 dk
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
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
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
using UnityEngine;
public class ItemData : ____
{
public string ogeAdi;
}
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ü |