חיבור ב-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 (), ולכן כפתור שמחובר בשתי הדרכים יקרא לשניהם.
אתגר
קלגרמו לשלושת הכפתורים של הגשר המתרומם לפעול ב־Drawbridge.cs.
- השורה On Click () של כל כפתור קוראת ל־
Raise, ל־Lowerאו ל־ToggleLamp. שנו את השםLowerBridgeל־Lower. - כתבו
public void Raise(): סובבו אתbridge.localRotationל־70 מעלות סביב ציר x, והגדירו אתstatusTextכך שיוצג בוBridge: up. - כתבו
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";
}
}
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין