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.
Görev
OrtaGameManager’ausing TMPro;,public TMP_Text scoreTextvepublic TMP_Text livesTextekle. Sahnedeki bağlantılar ScoreText ve LivesText’tir.void ShowHud()yaz: Geçerli sayılarlascoreTextScore: 0değerini,livesTextiseLives: 3değerini gösterir.ShowHud()işleviniStart()’ı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();
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.