Menu
CoddyTech

Puan ve Canlar

Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 9 / 16.

Puan ve canlar ekranda yer almalı. Sahnede artık üst kısımda ScoreText ve LivesText adlı iki TextMeshPro metni içeren bir Canvas var ve GameManager bunları TMPro ad alanından gelen TMP_Text alanlarında tutuyor.

Sayılar GameManager'ın alanlarında bulunur ve metinler yalnızca bunları gösterir. Bir yöntem her iki metni de alanlardaki değerlerden yeniden yazar ve bir sayıyı değiştiren her yöntem bu yöntemi çağırır; Start() da çağırır, böylece ilk kare gerçek değerleri gösterir. Bir dükkânın bozuk para sayacı:

public TMP_Text coinsText;
int coins;

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

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

Metin yalnızca sayı değiştiğinde değişir. Her Update() içinde yeniden yazmak aynı görünürdü, ancak boş yere her karede yeni bir dize oluşturur.

challenge icon

Görev

Orta
  1. GameManager’a using TMPro;, public TMP_Text scoreText ve public TMP_Text livesText ekle. Sahnedeki bağlantılar ScoreText ve LivesText’tir.
  2. void ShowHud() yaz: Geçerli sayılarla scoreText Score: 0 değerini, livesText ise Lives: 3 değerini gösterir.
  3. ShowHud() işlevini Start()’ın sonunda ve skor veya can sayısı değiştikten sonra çağır.

Play’e bas, bir tuğlayı kır, bir top kaybet, ardından Check’e bas.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler