Menu
CoddyTech

חיבור ב-Inspector

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

אפשר גם לחבר כפתור דרך ה־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

אתגר

קל

גרמו לשלושת הכפתורים של הגשר המתרומם לפעול ב־Drawbridge.cs.

  1. השורה On Click () של כל כפתור קוראת ל־Raise, ל־Lower או ל־ToggleLamp. שנו את השם LowerBridge ל־Lower.
  2. כתבו public void Raise(): סובבו את bridge.localRotation ל־70 מעלות סביב ציר x, והגדירו את statusText כך שיוצג בו Bridge: up.
  3. כתבו public void ToggleLamp(): הפונקציה מדליקה את warningLamp כשהיא כבויה, ומכבה אותה כשהיא דולקת.

לחצו על "שחק": כל כפתור מבצע את תפקידו. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

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";
    }
}

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

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