Menu
CoddyTech

עיצוב מספרים

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

כשמספר מצורף למחרוזת, התוצאה היא לפי האופן שבו C# כותבת אותו: טיימר מציג 12.34567, וערך float שהוא 2 מוצג כ-2, ללא ספרות עשרוניות כלל. מחרוזת עיצוב ב-ToString() קובעת איך הוא ייראה במקום זאת. כל 0 שבה מייצג ספרה שתמיד נכתבת: 7.ToString("000") הוא 007, ו-41.27f.ToString("0.0") הוא 41.3, מעוגל לספרה עשרונית אחת. באינטרפולציה של מחרוזות אותו עיצוב מופיע אחרי נקודתיים: $"{coins:000}", $"{topSpeed:0.0} m/s".

קל יותר לקרוא זמנים כשהם מוצגים בדקות ובשניות. תחילה המירו את הזמן ל-int, מה שמשמיט את החלק השברי; לאחר מכן חילוק שלם ב-60 נותן את מספר הדקות השלמות, ו-% 60 נותן את השניות שנותרו. הקפה של 83.46 שניות:

float lapTime = 83.46f;
int total = (int)lapTime;      // 83
int minutes = total / 60;      // 1
int seconds = total % 60;      // 23
lapText.text = $"Lap: {minutes}:{seconds:00}";   // הקפה: 1:23

ה-00 שומר על שתי ספרות: בלעדיו, הקפה של 64 שניות הייתה מוצגת כ-1:4 במקום 1:04. ומכיוון ש-(int) משמיט את החלק השברי במקום לעגל, 59.7 שניות מוצגות כ-0:59; עיגול היה מציג לרגע 0:60.

challenge icon

אתגר

קל

לוח התוצאות של משחק הארקייד Scoreboard.cs מציג את המספרים שלו כפי שהם. לחיצה על Space מעניקה 100 נקודות כפול המכפיל ומגדילה את המכפיל ב־0.5, ו־playTime סופר את השניות ששוחקו (ה־Inspector מתחיל אותו ב־47.5). השאר את הספירה כפי שהיא, ושנה את אופן הכתיבה של שלושת הטקסטים:

  • scoreText: הניקוד בשש ספרות, כמו Score: 000450.
  • comboText: המכפיל עם ספרה אחת אחרי הנקודה, כמו Combo: x2.5, ובתחילת המשחק Combo: x1.0.
  • timeText: דקות ושניות שלמות, כמו Time: 2:07. בשניות תמיד יש שתי ספרות, והן לעולם אינן מעוגלות כלפי מעלה.

לחץ על Play, צבור נקודות כמה פעמים, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;
using TMPro;

public class Scoreboard : MonoBehaviour
{
    public TMP_Text scoreText;
    public TMP_Text comboText;
    public TMP_Text timeText;
    public int score;
    public float combo = 1f;
    public float playTime;

    void Update()
    {
        playTime += Time.deltaTime;
        if (Input.GetKeyDown(KeyCode.Space))
        {
            score += (int)(100 * combo);
            combo += 0.5f;
        }

        scoreText.text = "Score: " + score;
        comboText.text = "Combo: x" + combo;
        timeText.text = "Time: " + playTime;
    }
}
quiz iconבחנו את עצמכם

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

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