צור ScriptableObjects ב-Unity

ScriptableObject ב-Unity הוא סוג מיוחד של מחלקה המאפשרת יצירה של אובייקטים הניתנים לשימוש חוזר, מונעי נתונים. הוא משמש בדרך כלל לאחסון וניהול נתוני משחק, תצורות והגדרות, אך ניתן להשתמש בו גם למגוון מטרות, כגון ניהול הגדרות משחק, יצירת מערכות מונעות נתונים, הגדרת יכולות אופי, אחסון דיאלוג או מידע קווסט וכו'. הוא מספק דרך גמישה ויעילה לארגון וניהול נתונים בפרויקטים Unity.

היתרון העיקרי של ScriptableObjects הוא שהם מספקים דרך ליצור מיכלי נתונים שניתן לשתף בקלות ולעשות בהם שימוש חוזר במספר מופעים של סקריפטים. ניתן לחשוב עליהם בתור "blueprints" ליצירת מופעים של סוג נתונים ספציפי. אפשר ליצור מופעים מרובים של ScriptableObject ולשנות את הנתונים שלהם באופן עצמאי.

צור ScriptableObject

ניתן ליצור את ScriptableObject בעורך Unity ולשמור כנכסים בפרויקט. בניגוד לסקריפטים של MonoBehaviour, ScriptableObject אינו מצורף ל-GameObject בסצנה, אך ניתן להתייחס אליו ולהשתמש בסקריפטים אחרים.

כדי ליצור ScriptableObject, בצע את השלבים הבאים:

  • בעורך 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)'.

התאמה אישית של ה-ScriptableObject במפקח:

  • השתמש בתכונות כמו '[SerializeField]' כדי לחשוף שדות ספציפיים ל-Unity Inspector לצורך שינוי תוך שמירה על השדות האלה בלתי נגישים מהסקריפט שישתמש באותו 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, ובסופו של דבר מייעל את תהליך הפיתוח ומעצים את היצירה של משחקים חזקים ודינמיים יותר.