Menu
CoddyTech

הפניות עדיפות על Find

חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 45 מתוך 67.

סקריפט יכול להגיע לאובייקט אחר בארבע דרכים: שדה שמוגדר ב-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() ושמרו את התוצאה בשדה.

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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