إنشاء كائنات Scriptable في الوحدة

ScriptableObject في Unity هو نوع خاص من الفئات يسمح بإنشاء كائنات قابلة لإعادة الاستخدام تعتمد على البيانات. يتم استخدامه بشكل شائع لتخزين وإدارة بيانات اللعبة وتكويناتها وإعداداتها، ولكن يمكن استخدامه أيضًا لمجموعة متنوعة من الأغراض، مثل إدارة إعدادات اللعبة وإنشاء أنظمة تعتمد على البيانات وتحديد قدرات الشخصية وتخزين dialogue أو معلومات البحث، وما إلى ذلك. فهو يوفر طريقة مرنة وفعالة لتنظيم وإدارة البيانات في Unity المشاريع.

الميزة الرئيسية لـ ScriptableObjects هي أنها توفر طريقة لإنشاء حاويات بيانات يمكن مشاركتها وإعادة استخدامها بسهولة عبر مثيلات متعددة من البرامج النصية. يمكن اعتبارها "blueprints" لإنشاء مثيلات لنوع بيانات محدد. من الممكن إنشاء مثيلات متعددة لـ ScriptableObject وتعديل بياناتها بشكل مستقل.

إنشاء كائن Scriptable

يمكن إنشاء ScriptableObject في محرر Unity وحفظه كأصول في المشروع. على عكس البرامج النصية MonoBehaviour، لا يتم إرفاق ScriptableObject بـ GameObject في المشهد ولكن يمكن الرجوع إليه واستخدامه بواسطة برامج نصية أخرى.

لإنشاء كائن Scriptable، اتبع الخطوات التالية:

  • في محرر Unity، انقر بزر الماوس الأيمن في نافذة المشروع وانتقل إلى "Create -> C# ScriptableObject".
  • أعطه اسمًا ذا معنى وافتح البرنامج النصي في محرر التعليمات البرمجية المفضل.

تحديد فئة ScriptableObject:

  • في البرنامج النصي، ترث من فئة ScriptableObject.
  • حدد الحقول أو الخصائص العامة لتمثيل البيانات المراد تخزينها في ScriptableObject.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public string dataName;
    public int dataValue;
}

في المثال أعلاه، قمنا بتعريف فئة ScriptableObject بحقلين عامين: 'dataName (string)' و 'dataValue (int)'.

تخصيص كائن Scriptable في المفتش:

  • استخدم سمات مثل '[SerializeField]' لعرض حقول محددة للمفتش Unity للتعديل مع الحفاظ على عدم إمكانية الوصول إلى هذه الحقول من البرنامج النصي الذي سيستخدم ScriptableObject.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    [SerializeField]
    private string dataName;

    [SerializeField]
    private int dataValue;
}

إنشاء مثيلات ScriptableObjects:

  • في محرر Unity، انقر بزر الماوس الأيمن في نافذة المشروع وحدد "Create" لإنشاء مثيل لـ ScriptableObject.
  • قم بتخصيص بيانات المثيل الذي تم إنشاؤه في المفتش.

الوصول إلى بيانات ScriptableObject من البرامج النصية الأخرى:

  • في البرنامج النصي MonoBehaviour أو أي برنامج نصي آخر، قم بإنشاء حقل عام أو متسلسل من نوع ScriptableObject وقم بتعيينه في طريقة العرض Inspector.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;
}
  • يمكن بعد ذلك الوصول إلى بيانات مثيل ScriptableObject من خلال الحقل المخصص.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;

    private void Start()
    {
        Debug.Log("Data Name: " + myData.dataName);
        Debug.Log("Data Value: " + myData.dataValue);
    }
}

خاتمة

تعد ScriptableObjects أداة متعددة الاستخدامات لإدارة وتنظيم البيانات في مشاريع الألعاب. من خلال إنشاء حاويات بيانات قابلة لإعادة الاستخدام وقابلة للتخصيص، توفر ScriptableObjects طريقة مرنة وفعالة لتخزين التكوينات والإعدادات والمعلومات الأخرى غير الخاصة بالمثيلات. من خلال القدرة على إنشاء مثيلات متعددة لكائن ScriptableObject وتعديل بياناتها بشكل مستقل، يصبح من السهل إنشاء أنظمة تعتمد على البيانات وإدارة إعدادات اللعبة وتحديد قدرات الشخصية وتخزين الحوار أو معلومات المهمة وغير ذلك الكثير. يؤدي استخدام ScriptableObjects إلى تحسين إمكانية إعادة الاستخدام وقابلية الصيانة وقابلية التوسع لمشاريع Unity، مما يؤدي في النهاية إلى تبسيط عملية التطوير وتمكين إنشاء ألعاب أكثر قوة وديناميكية.

المقالات المقترحة
إنشاء كائنات تفاعلية في الوحدة
إنشاء المقتنيات وشكا من السلطة في الوحدة
إنشاء الفئات والكائنات في رمز الوحدة
إنشاء نظام جرد وصياغة العناصر في الوحدة
كيفية إنشاء كائن اتبع مؤشر الماوس في الوحدة
إنشاء GrabPack في Unity مستوحى من Poppy Playtime
إنشاء تأثير وقت الرصاصة في الوحدة