Menu
CoddyTech

חיפוש לפי שם

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

GameObject.Find("Player") מחפש בסצנה אובייקט פעיל בשם הזה בדיוק ומחזיר אותו, או null אם אין כזה. כך נחסך הצורך לחבר שדה ב-Inspector, אך יש לכך מחיר: הפונקציה עוברת על כל האובייקטים בסצנה. לכן יש לקרוא לה פעם אחת, ב-Start(), ולשמור את התוצאה בשדה. מצלמת האבטחה הזו מוצאת את Player כשהמשחק מתחיל ועוקבת אחריו בכל פריים:

private Transform player;

void Start()
{
    player = GameObject.Find("Player").transform;
}

void Update()
{
    transform.LookAt(player);
}

השם חייב להתאים בדיוק, כולל אותיות גדולות ורווחים: "player" או "Player " לא ימצאו דבר. Find גם מדלגת על אובייקטים לא פעילים (מוסתרים). חיפוש שנכשל מחזיר null בלי להתריע, והשגיאה מופיעה בשורה הבאה שמשתמשת בתוצאה: כאן, .transform גורמת ל-NullReferenceException. נתיב כמו "Car/Wheel" מוצא את Wheel שהוא ילד של Car.

challenge icon

אתגר

בינוני

הרובר מדווח מה המרחק שלו מהמטרה.

  • ב־Start(), מצא את האובייקט בשם Goal ושמור את ה־Transform שלו ב־goal.
  • בכל פעם שלוחצים על מקש הרווח, הצג ביומן את המרחק מהרובר למטרה, כך: Distance to goal: 5.

המטרה יכולה לזוז, לכן מדוד את המרחק ברגע שלוחצים על מקש הרווח.

לחץ על Play, לחץ בתוך המשחק ולחץ על מקש הרווח, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // מצא את האובייקט בשם Goal ושמור את ה-Transform שלו ב-goal.
    }

    void Update()
    {
        // Space: רשום ביומן את המרחק אל המטרה.
    }
}
quiz iconבחנו את עצמכם

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

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