النقاط والأرواح
الدرس 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() كما هي، لكنها تنشئ سلسلة نصية جديدة في كل إطار دون داعٍ.
التحدي
متوسط- أضف
using TMPro;إلىGameManager، وpublic TMP_Text scoreTextوpublic TMP_Text livesText. اربط المشهد بـ ScoreText وLivesText. - اكتب
void ShowHud(): يعرضscoreTextالقيمةScore: 0، ويعرضlivesTextالقيمةLives: 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();
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.