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 משמיטה בשקט את הערך שנשמר בסצנה. השדה חוזר למספר שבקוד, בלי שום שגיאה שתודיע לכם על כך.
אתגר
קלהסתר את גובה המנורה מסקריפטים אחרים, אבל השאר אותו ב־Inspector.
- שנה את השדה ל־
[SerializeField] private float height = 1f;. - השאר את
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
1יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין