Menu
CoddyTech

ניקוד וחיים

שיעור 9 מתוך 16 בקורס משחק Unity: שובר לבנים של Coddy.

הניקוד והחיים שייכים למסך. בסצנה יש עכשיו Canvas עם שני טקסטים של TextMeshPro בחלק העליון, ScoreText ו-LivesText, וה-GameManager מכיל אותם בשדות מסוג TMP_Text ממרחב השמות TMPro.

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

public TMP_Text coinsText;
int coins;

public void AddCoins(int amount)
{
    coins += amount;
    ShowCoins();
}

void ShowCoins()
{
    coinsText.text = "Coins: " + coins;
}

הטקסט משתנה רק כשהמספר משתנה. עדכון שלו בכל Update() ייראה אותו הדבר, אבל ייצור מחרוזת חדשה בכל פריים ללא סיבה.

challenge icon

אתגר

בינוני
  1. הוסף using TMPro; ל־GameManager, ואת public TMP_Text scoreText ואת public TMP_Text livesText. הסצנה מקשרת בין ScoreText ו־LivesText.
  2. כתוב void ShowHud(): scoreText מציג Score: 0 ו־livesText מציג Lives: 3, עם המספרים הנוכחיים.
  3. קרא ל־ShowHud() בסוף Start(), ולאחר שהניקוד או מספר החיים משתנים.

לחץ על Play, שבור לבנה, אבד כדור, ואז לחץ על Check.

נסו בעצמכם

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public Brick brickPrefab;
    public Transform wall;
    public int rows = 5;
    public int columns = 9;
    public float spacingX = 1.75f;
    public float spacingY = 0.75f;
    public float topY = 6f;
    public int[] rowHits = { 2, 1, 1, 1, 1 };
    public int lives = 3;

    int score;

    void Awake()
    {
        Instance = this;
    }

    void Start()
    {
        BuildWall();
    }

    void BuildWall()
    {
        float left = -(columns - 1) * spacingX / 2f;
        for (int row = 0; row < rows; row++)
        {
            for (int col = 0; col < columns; col++)
            {
                Vector3 pos = new Vector3(left + col * spacingX, topY - row * spacingY, 0f);
                Brick brick = Instantiate(brickPrefab, pos, Quaternion.identity, wall);
                brick.SetHits(rowHits[row]);
            }
        }
    }

    public void BrickBroken(Brick brick)
    {
        score += brick.points;
    }

    public void BallLost(Ball lost)
    {
        lives--;
        lost.ResetToPaddle();
    }
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה משחק Unity: שובר לבנים