Menu
CoddyTech

חיבור ב-Inspector

חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 8 מתוך 56.

אפשר לחבר כפתור גם דרך ה־Inspector, בלי AddListener בכלל. רשימת On Click () של הכפתור ריקה בתחילה. סימן ה־+ מוסיף שורה; גרור את האובייקט שמכיל את הסקריפט אל משבצת האובייקט בשורה, והתפריט הנפתח של הפונקציות מציג את הרכיבים של אותו אובייקט, ולכל אחד מהם את המתודות הציבוריות שלו. בחר Jukebox > NextTrack, וכל לחיצה תקרא למתודה הזו:

public class Jukebox : MonoBehaviour
{
    public string[] tracks;
    private int current;

    public void NextTrack()
    {
        current = (current + 1) % tracks.Length;
        Debug.Log("Now playing: " + tracks[current]);
    }
}

התפריט הנפתח מציג מתודות שהן public, מחזירות void, ומקבלות אפס פרמטרים או פרמטר אחד מסוג int, float, string, bool או Object, שאת הערך שלו מגדירים בשורה. מתודה פרטית בשם NextTrack לא תופיע ברשימה, ולכן אי אפשר לבחור בה. השורה שומרת את המתודה לפי שמה: אם תשנה את השם NextTrack ל־SkipTrack, השורה תציג <Missing Jukebox.NextTrack>, והלחיצות לא יעשו דבר, בלי שגיאה ב־Console.

שורות ב־Inspector מתאימות לכפתורים שמוצבים בסצנה: כל אחד בצוות יכול לראות ולשנות למה הכפתור קורא, בלי לפתוח סקריפט. AddListener בקוד מתאים לכפתורים שנוצרים בזמן ריצת המשחק ולקריאות שמעבירות ערך ממשתנה; המהדר מזהה אם שם המתודה השתנה. מאזינים שנוספו בקוד לעולם לא מופיעים ברשימת On Click (), ולכן כפתור שמחובר בשתי הדרכים יקרא לשניהם.

challenge icon

אתגר

קל

לגשר המתרומם של הטירה יש שלושה לחצנים, שמחוברים ב-Inspector לסקריפט Drawbridge על BridgeControl. אף אחד מהם עדיין לא פועל. בחרו את RaiseButton,‏ LowerButton ו-LampButton ב-Hierarchy וקראו את שורת On Click () של כל אחד מהם: היא מציינת את המתודה שהלחיצה מפעילה. הפעילו את שלושתם על ידי שינוי Drawbridge.cs בלבד:

  • אחת המתודות כבר כתובה, תחת שם אחר. תנו לה את השם שמופיע בשורה שלה.
  • הרמה מסובבת את bridge ב-70 מעלות סביב ציר x (ה-localRotation שלו) ומציגה את Bridge: up ב-statusText.
  • לחצן המנורה מדליק את warningLamp כשהיא כבויה, ומכבה אותה כשהיא דולקת.

לחצו על Play, נסו את כל הלחצנים ואז לחצו על Check.

נסו בעצמכם

using UnityEngine;
using TMPro;

public class Drawbridge : MonoBehaviour
{
    public Transform bridge;
    public TMP_Text statusText;
    public GameObject warningLamp;

    public void LowerBridge()
    {
        bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
        statusText.text = "Bridge: down";
    }
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה בונים משחקים אמיתיים