הפניות עדיפות על חיפוש
חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 59 מתוך 85.
סקריפט יכול להגיע לאובייקט אחר בארבע דרכים: שדה שמוגדר ב-Inspector, חיפוש לפי שם באמצעות GameObject.Find, חיפוש לפי תג, או חיפוש לפי סוג באמצעות FindAnyObjectByType. עבור אובייקט שנמצא בסצנה מההתחלה, קוד Unity משתמש בשדה Inspector, משלוש סיבות:
- מהירות. ההפניה מוגדרת לפני שהמשחק מתחיל. כל חיפוש עובר על האובייקטים בסצנה, וחיפוש בתוך
Update()עושה זאת בכל פריים. - בטיחות. שם בתוך מחרוזת מפסיק לעבוד כשמישהו משנה את שם האובייקט: Find מחזירה
nullוהשגיאה מופיעה מאוחר יותר, בשורה שבה משתמשים בו. שדה Inspector ריק גורם ל-UnassignedReferenceException, שמציינת את שם השדה והסקריפט. - בהירות. ה-Inspector מציג במה הסקריפט תלוי. קריאת Find מסתירה זאת בתוך הקוד.
// מוגדר פעם אחת ב-Inspector: אין חיפוש, ושינוי שם לא משנה דבר
[SerializeField] private Transform door;
// מתבצע חיפוש בכל פריים, והערך הוא null לאחר ששמה של הדלת משתנה
void Update()
{
Transform d = GameObject.Find("Door").transform;
}לחיפושים יש מקום: אובייקטים שקיימים רק כשהמשחק רץ, כמו אובייקט שנוצר במהלך המשחק, וסקריפטים שחייבים לעבוד בכל סצנה. גם אז, חפשו פעם אחת ב-Start() ושמרו את התוצאה בשדה.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
כל השיעורים ביחידה יסודות הסקריפטים ב-Unity
1יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות10מציאת דברים
מציאה לפי שםתגיותמציאה לפי סוגהפניות עדיפות על חיפושה־Null של Unityסיכום: המטבע הקרוב ביותר5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין