Menu
CoddyTech

קנבס וטקסט

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

Unity מצייר טקסט, לחצנים ופסים על המסך באמצעות מערכת ממשק המשתמש שלו. ב-Unity 6, האפשרות GameObject > UI > Text - TextMeshPro מוסיפה אובייקט טקסט בשם Text (TMP); בפעם הראשונה Unity מבקשת לייבא את רכיבי ה-TMP Essentials, שהטקסט זקוק להם עבור הגופן שלו. אם עדיין אין בסצנה Canvas, Unity יוצרת אחד ומכניסה לתוכו את הטקסט, וגם מוסיפה EventSystem שדרכו עוברות לחיצות על ממשק המשתמש. ה-Canvas מצייר את הצאצאים שלו מעל התמונה של המצלמה, במקום קבוע על המסך, בכל מקום שאליו המצלמה מביטה. הגדירו את Canvas Scaler שלו ל-Scale With Screen Size, 1920 x 1080, Match 0.5, כפי שעושה כל סצנה בקורס הזה, והפריסה תשמור על הפרופורציות שלה בכל גודל מסך.

הרכיב של הטקסט הוא TextMeshPro - Text (UI). סקריפטים מאחסנים אותו בשדה מהסוג הבסיסי שלו TMP_Text, מתוך מרחב השמות TMPro, ומשנים את מה שהוא מציג דרך המאפיין text שלו, שהוא מחרוזת. הסקריפט הזה נותן שם לשלב כשהוא מתחיל:

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

    void Start()
    {
        titleText.text = "World 2: Ice Caves";
    }
}

גררו את אובייקט Text (TMP) מה-Hierarchy אל המשבצת Title Text ב-Inspector, ו-Unity תציב את רכיב הטקסט שלו בשדה. בלי using TMPro; השם TMP_Text אינו מוכר והסקריפט לא מתקמפל (CS0246). אם המשבצת נשארת ריקה, השימוש הראשון ב-titleText.text גורם לחריגה UnassignedReferenceException. מה שהסקריפט כותב מחליף את הטקסט שהוקלד בשדה Text Input ב-Inspector, שהוא New Text בטקסט חדש.

challenge icon

אתגר

קל

החוקר הולך באי באמצעות החצים שמאלה וימינה, כפי ש־Explorer.cs כבר עושה. הציגו את המיקום שלו ב־ZoneText בראש המסך, שעדיין מציג טקסט חדש:

  • הוסיפו using TMPro; ושדה ציבורי מסוג TMP_Text בשם zoneText. הסצנה מקשרת את ZoneText לשדה בשם המדויק הזה.
  • בכל פריים, הטקסט מציג Zone: Beach כשה־x של החוקר קטן מ־2, ו־Zone: Jungle מ־2 ומעלה.

לחצו על הפעלה, לכו אל הדשא וחזרה, ואז לחצו על בדיקה.

נסו בעצמכם

using UnityEngine;

public class Explorer : MonoBehaviour
{
    public float speed = 4f;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        // הצג את האזור ב-ZoneText: אזור: חוף כאשר x קטן מ-2, אזור: ג'ונגל מ-2 ומעלה
    }
}
quiz iconבחנו את עצמכם

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

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