Menu
CoddyTech

הפניות ב-Inspector

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 43 מתוך 85.

שדה יכול להכיל אובייקט אחר. תן לו טיפוס כמו Transform או GameObject, וה־Inspector יציג משבצת ריקה שתוכל למלא על ידי גרירת אובייקט מה־Hierarchy אליה. סקריפט המצלמה הזה עוקב אחרי האובייקט שנגרר אל player, ונשאר 3 יחידות מעליו ו־6 מאחוריו:

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

משבצת שנשארה ריקה מציגה None, והשורה הראשונה שמשתמשת בה זורקת בכל פריים: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. בשורה הבאה של ההודעה כתוב מה לעשות: You probably need to assign the player variable of the CameraFollow script in the inspector. היא מציינת את השדה ואת הסקריפט, כדי שתדע איזו משבצת למלא.

סקריפטים מסוימים צריכים לפעול גם כשהמשבצת ריקה. Unity גורמת למשבצת ריקה להיחשב שווה ל־null, ולכן סקריפט כזה בודק לפני השימוש בה. כשעוטפים את השורה ב־Update() בתנאי if (player != null), מצלמה ללא שחקן נשארת במקומה במקום לזרוק שגיאה.

challenge icon

אתגר

בינוני

שלח כל שומר לעמדה שהמפקח שלו מציין.

  1. הוסף את השדה public Transform post;. המשבצת של Guard1 מכילה את Post1; זו של Guard2 ריקה.
  2. ב־Update(), כאשר post == null, בצע return; כדי ששומר ללא עמדה יישאר במקומו.
  3. לאחר מכן הזז באמצעות Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).

לחץ על "שחק": Guard1 הולך לעמדה שלו ו־Guard2 ממתין. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: ה-Transform שאליו השומר הזה הולך, מוגדר ב-Inspector
    public float speed = 2f;

    void Update()
    {
        // לך אל post במהירות speed. שומר ששדה post שלו ריק נשאר במקומו.
    }
}

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

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