חיפוש לפי שם
חלק מהיחידה יסודות התכנות ב-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.
אתגר
בינוניהרובר מדווח מה המרחק שלו מהמטרה.
- ב־
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: רשום ביומן את המרחק אל המטרה.
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות התכנות ב-Unity
1הסקריפט הראשון שלך
שלום, Unityהצב את הקובייהזוז בכל פרייםהסתובב בכל שנייהנווט בעזרת המקשיםסיכום: נהג בקובייה4וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן10מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: מתעד מחזור החיים8איתור דברים
חיפוש לפי שםתגיותחיפוש לפי סוגהפניות עדיפות על Findה-Null של Unityסיכום: המטבע הקרוב ביותר