Menu
CoddyTech

مراجعة: مدير الجولة

جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 16 من 60.

منح هذا الفصل اللعبة مديرًا واحدًا: كائنًا مفردًا يصل إليه الآخرون من دون حقل، وحالات يتنقل بينها. ويستخدم مدير الجولة كليهما.

challenge icon

التحدي

سهل

أكمل جمع العملات؛ تمت كتابة SetState.

  1. أضف public static RoundManager Instance;، واضبطه في Awake().
  2. في Update()، استخدم التبديل على state: تنتظر Ready الضغط على Space؛ وفي Playing يُنقص timeLeft حتى يصل إلى الصفر، ثم ينتقل إلى Ready للجولة التالية، أو إلى Finished بعد الجولة الأخيرة.
  3. 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
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس إنشاء ألعاب حقيقية

تدرّب بنفسك: Playground لـ Unity