Menu
CoddyTech

קנבס וטקסט

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

‏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

אתגר

קל

הצג למעלה את האזור שבו הסייר נמצא, בתוך ZoneText.

  1. ב־Explorer.cs, הוסף using TMPro; ואת השדה public TMP_Text zoneText;. הסצנה מקשרת את ZoneText לשם הזה.
  2. ב־Update(), מתחת להערה, הגדר את zoneText.text לערך Zone: Beach כל עוד transform.position.x קטן מ־2, ולערך Zone: Jungle אחרת.

לחץ על שחק והתקדם ימינה אל הדשא: הטקסט משתנה ל־Jungle. לאחר מכן לחץ על בדיקה.

נסו בעצמכם

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: ‏Zone: Beach כאשר x קטן מ-2, ו-Zone: Jungle מ-2 ומעלה
    }
}

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

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