Unity'de ScriptableObjects Oluşturun
Unity'teki ScriptableObject, yeniden kullanılabilir, veri odaklı nesnelerin oluşturulmasına olanak tanıyan özel bir sınıf türüdür. Yaygın olarak oyun verilerini, yapılandırmalarını ve ayarlarını depolamak ve yönetmek için kullanılır, ancak aynı zamanda oyun ayarlarını yönetmek, veriye dayalı sistemler oluşturmak, karakter yeteneklerini tanımlamak, diyalog depolamak gibi çeşitli amaçlar için de kullanılabilir. veya görev bilgileri vb. Unity projelerinde verileri düzenlemek ve yönetmek için esnek ve etkili bir yol sağlar.
ScriptableObjects'ün ana avantajı, birden çok komut dosyası örneği arasında kolayca paylaşılabilen ve yeniden kullanılabilen veri kapları oluşturmanın bir yolunu sağlamasıdır. Belirli bir veri türünün örneklerini oluşturmak için "blueprints" olarak düşünülebilirler. Bir ScriptableObject'in birden çok örneğini oluşturmak ve verilerini bağımsız olarak değiştirmek mümkündür.
ScriptableObject oluşturun
ScriptableObject Unity düzenleyicisinde oluşturulabilir ve projede varlıklar olarak kaydedilebilir. MonoBehaviour komut dosyalarının aksine, ScriptableObject sahnedeki GameObject'e eklenmez ancak diğer komut dosyaları tarafından referans alınabilir ve kullanılabilir.
ScriptableObject oluşturmak için aşağıdaki adımları izleyin:
- Unity düzenleyicisinde, Proje penceresine sağ tıklayın ve "Create -> C# ScriptableObject"'ye gidin.
- Anlamlı bir ad verin ve betiği tercih ettiğiniz kod düzenleyicide açın.
ScriptableObject sınıfını tanımlama:
- Komut dosyasında ScriptableObject sınıfından miras alın.
- ScriptableObject'te depolanacak verileri temsil edecek ortak alanları veya özellikleri tanımlayın.
using UnityEngine;
[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
public string dataName;
public int dataValue;
}
Yukarıdaki örnekte, iki ortak alana sahip bir ScriptableObject sınıfı tanımlıyoruz: 'dataName (string)' ve 'dataValue (int)'.
Inspector'da ScriptableObject'i özelleştirme:
- '[SerializeField]' gibi öznitelikleri kullanarak belirli alanları değişiklik için Unity Denetleyicisine gösterin ve bu alanları söz konusu ScriptableObject'i kullanacak komut dosyasından erişilemez tutun.
using UnityEngine;
[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
[SerializeField]
private string dataName;
[SerializeField]
private int dataValue;
}
ScriptableObjects örnekleri oluşturma:
- Unity düzenleyicisinde Proje penceresine sağ tıklayın ve ScriptableObject'in bir örneğini oluşturmak için "Create"'i seçin.
- Inspector'da oluşturulan örneğin verilerini özelleştirin.
ScriptableObject verilerine diğer komut dosyalarından erişme:
- MonoBehaviour betiğinde veya başka bir betikte, ScriptableObject türünde genel veya serileştirilmiş bir alan oluşturun ve bunu Denetçi görünümünde atayın.
using UnityEngine;
public class MyBehaviour : MonoBehaviour
{
public MyScriptableObject myData;
}
- ScriptableObject örneğinin verilerine daha sonra atanan alan aracılığıyla erişilebilir.
using UnityEngine;
public class MyBehaviour : MonoBehaviour
{
public MyScriptableObject myData;
private void Start()
{
Debug.Log("Data Name: " + myData.dataName);
Debug.Log("Data Value: " + myData.dataValue);
}
}
Çözüm
ScriptableObjects, oyun projelerindeki verileri yönetmek ve düzenlemek için çok yönlü bir araçtır. ScriptableObjects, yeniden kullanılabilir ve özelleştirilebilir veri kapsayıcıları oluşturarak yapılandırmaları, ayarları ve örneğe özgü olmayan diğer bilgileri depolamak için esnek ve etkili bir yol sunar. Bir ScriptableObject'in birden fazla örneğini oluşturma ve verilerini bağımsız olarak değiştirme yeteneği sayesinde, veri odaklı sistemler oluşturmak, oyun ayarlarını yönetmek, karakter yeteneklerini tanımlamak, diyalog veya görev bilgilerini depolamak ve çok daha fazlasını yapmak kolaylaşır. ScriptableObjects'in kullanılması Unity projelerinin yeniden kullanılabilirliğini, sürdürülebilirliğini ve ölçeklenebilirliğini artırır, sonuçta geliştirme sürecini kolaylaştırır ve daha sağlam ve dinamik oyunların oluşturulmasını güçlendirir.