Menu
CoddyTech

הצגת הניקוד

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

ה־text של טקסט הוא מחרוזת, לכן מספר חייב להפוך לטקסט לפני שמציגים אותו. שרשור שלו למחרוזת באמצעות + עושה זאת: "Wood: " + wood הוא Wood: 12 כאשר wood הוא 12, ו־wood.ToString() הוא 12. ה־int לבדו אינו מתאים: woodText.text = wood; נכשל עם CS0029, Cannot implicitly convert type 'int' to 'string'.

המספר נשמר בשדה מסוג int, והטקסט רק מציג אותו. מתודה אחת מעדכנת את הטקסט מתוך השדה; כל שינוי במספר קורא לה, וכך גם Start(), כך שהפריים הראשון מציג את הערך האמיתי במקום את מה שהוקלד ב־Inspector. כאן מקש הרווח חותך 3 בולי עץ:

public TMP_Text woodText;
private int wood;

void Start()
{
    ShowWood();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        wood += 3;
        ShowWood();
    }
}

void ShowWood()
{
    woodText.text = "Wood: " + wood;
}

הטקסט משתנה רק כאשר wood משתנה. עדכון שלו בכל Update() ייראה אותו דבר, אבל ייצור מחרוזת חדשה 60 פעמים בשנייה ללא סיבה. לסדר יש חשיבות: קריאה ל־ShowWood() לפני wood += 3 תציג את הספירה הישנה, כלומר תהיה בפיגור של לחיצה אחת.

challenge icon

אתגר

קל

הציגו על המסך את הזרעים והעצים של הגנן.

  1. ב־Gardener.cs, כתבו void ShowCounts() שמגדירה את seedsText.text ל־"Seeds: " + seeds ואת treesText.text ל־"Trees: " + trees.
  2. קראו לה בתוך Start() חדשה, ובתוך ה־if של השתילה אחרי trees++;.

לחצו על "שחק": הטקסטים מציגים Seeds: 5 ו־Trees: 0, ומשתנים עם כל שתיל. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;
using TMPro;

public class Gardener : MonoBehaviour
{
    public float speed = 4f;
    public int seeds = 10;
    public GameObject saplingPrefab;
    public TMP_Text seedsText;
    public TMP_Text treesText;
    private int trees;

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

        if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
        {
            Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
            Instantiate(saplingPrefab, spot, Quaternion.identity);
            seeds--;
            trees++;
        }
    }

    // הצג את Seeds: ואת Trees: בשני שדות הטקסט, החל מהפריים הראשון
}

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

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