مراجعة: مدير الجولة
جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 16 من 60.
منح هذا الفصل اللعبة مديرًا واحدًا: كائنًا مفردًا يصل إليه الآخرون من دون حقل، وحالات يتنقل بينها. ويستخدم مدير الجولة كليهما.
التحدي
سهلأكمل جمع العملات؛ تمت كتابة SetState.
- أضف
public static RoundManager Instance;، واضبطه فيAwake(). - في
Update()، استخدم التبديل علىstate: تنتظر Ready الضغط على Space؛ وفي Playing يُنقصtimeLeftحتى يصل إلى الصفر، ثم ينتقل إلى Ready للجولة التالية، أو إلى Finished بعد الجولة الأخيرة. public bool TakeCoin(): لا تعمل إلا أثناء Playing، فاحتسب العملة واعرضCoins: 2وأعِد true. يحذفCoin.csالعملة المحتسبة التي يلمسها Player.
اضغط «العب» للعب الجولات الثلاث كلها. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
using TMPro;
public enum RoundState { Ready, Playing, Finished }
public class RoundManager : MonoBehaviour
{
// الكائن الوحيد: Instance ثابت، يُعيَّن في Awake()
public GameObject readyPanel;
public GameObject playPanel;
public GameObject finishedPanel;
public TMP_Text roundText;
public TMP_Text coinsText;
public TMP_Text finalText;
public int rounds = 3;
public float roundTime = 4f;
private RoundState state;
private int round = 1;
private int coins;
private float timeLeft;
void Start()
{
SetState(RoundState.Ready);
}
void Update()
{
// التفرّع حسب state: تنتظر Ready ضغط Space؛ وتحسب Playing الوقت المتبقي تنازليًا
}
void SetState(RoundState next)
{
state = next;
readyPanel.SetActive(next == RoundState.Ready);
playPanel.SetActive(next == RoundState.Playing);
finishedPanel.SetActive(next == RoundState.Finished);
if (next == RoundState.Ready) roundText.text = "Round " + round;
if (next == RoundState.Playing) timeLeft = roundTime;
if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
}
// TakeCoin(): لا تُحتسب العملة إلا أثناء Playing
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity