Menu
CoddyTech

הפניות עדיפות על חיפוש

חלק מהיחידה יסודות הסקריפטים ב-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

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