Menu
CoddyTech

SerializeField

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 15 מתוך 85.

שדה public עושה שני דברים בו־זמנית: הוא מופיע בחלון Inspector, וכל סקריפט אחר יכול לקרוא אותו ולשנות אותו. לעיתים קרובות צריך רק את הראשון. אפשר לשנות שדה private (ברירת המחדל ב־C#) רק מתוך המחלקה שלו, כך שאף סקריפט אחר לא יכול לשבש אותו, אבל Unity לא מציגה אותו בחלון Inspector.

[SerializeField] מבקש מ־Unity לשמור ולהציג שדה פרטי בכל זאת. את הטווח של הצריח הזה מגדירים לכל צריח בנפרד בחלון Inspector, ואף סקריפט אחר לא יכול לגעת בו:

[SerializeField] private float range = 5f;

void Start()
{
    Debug.Log("Range: " + range);
}

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

challenge icon

אתגר

קל

הסתר את גובה המנורה מסקריפטים אחרים, אבל השאר אותו ב־Inspector.

  1. שנה את השדה ל־[SerializeField] private float height = 1f;.
  2. השאר את Start() כפי שהוא: ה־Inspector מגדיר את height ל־4.

לחץ על ״שחק״: המנורה עדיין תלויה בגובה 4. לאחר מכן לחץ על ״בדיקה״.

נסו בעצמכם

using UnityEngine;

public class LampHeight : MonoBehaviour
{
    public float height = 1f;

    void Start()
    {
        transform.position = new Vector3(0, height, 0);
    }
}

כל השיעורים ביחידה יסודות הסקריפטים ב-Unity

תרגלו בעצמכם: Unity אונליין