Skor dan Nyawa
Pelajaran 9 dari 16 dalam kursus Game Unity: Brick Breaker di Coddy.
Skor dan nyawa seharusnya tampil di layar. Scene kini memiliki Canvas dengan dua teks TextMeshPro di bagian atas, ScoreText dan LivesText, dan GameManager menyimpannya dalam field TMP_Text dari namespace TMPro.
Angka disimpan dalam field GameManager dan teks hanya menampilkannya. Satu method menulis ulang kedua teks dari field, dan setiap method yang mengubah angka memanggilnya, begitu juga Start(), sehingga frame pertama menampilkan nilai yang sebenarnya. Penghitung koin di toko:
public TMP_Text coinsText;
int coins;
public void AddCoins(int amount)
{
coins += amount;
ShowCoins();
}
void ShowCoins()
{
coinsText.text = "Coins: " + coins;
}Teks hanya berubah saat angkanya berubah. Menulis ulang teks itu di setiap Update() akan terlihat sama, tetapi membuat string baru setiap frame tanpa alasan.
Tantangan
Sedang- Tambahkan
using TMPro;keGameManager, sertapublic TMP_Text scoreTextdanpublic TMP_Text livesText. Hubungkan ScoreText dan LivesText di scene. - Tulis
void ShowHud():scoreTextmenampilkanScore: 0danlivesTextmenampilkanLives: 3, dengan angka saat ini. - Panggil
ShowHud()di akhirStart(), dan setelah skor atau jumlah nyawa berubah.
Tekan Play, hancurkan brick, biarkan bola hilang, lalu tekan Check.
Coba sendiri
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();
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.