Menu
CoddyTech

مؤقّت للعدّ التنازلي

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

يحتفظ العدّ التنازلي بالوقت المتبقي في قيمة float، ويطرح منها Time.deltaTime في كل إطار. نادرًا ما ينتهي الإطار الأخير عند 0 تمامًا، لذا توقفه Mathf.Max عندها، ويجب أن تحدث النهاية مرة واحدة. يمنح هذا الفتيل اللاعب 5 ثوانٍ لإبطال مفعول قنبلة:

public TMP_Text fuseText;
public float fuse = 5f;
private bool exploded;

void Update()
{
    if (exploded)
    {
        return;
    }

    fuse = Mathf.Max(fuse - Time.deltaTime, 0f);
    fuseText.text = "Fuse: " + Mathf.CeilToInt(fuse);

    if (fuse == 0f)
    {
        exploded = true;
        fuseText.text = "BOOM";
        fuseText.color = Color.red;
    }
}

تقرّب Mathf.CeilToInt إلى الأعلى، وهذا ما يعرضه العدّ التنازلي: 5 طوال الثانية الأولى (إذ تُقرّب 4.99 إلى 5)، و1 خلال الثانية الأخيرة، و0 فقط عند انتهاء الوقت. أما (int)fuse فسيقرّب 4.99 إلى 4، وسيعرض 0 طوال الثانية الأخيرة بينما لا تزال القنبلة تدق؛ أما Mathf.RoundToInt فسيعرض 0 خلال النصف الثاني من الثانية الأخيرة. ويتبع العدّ التنازلي الأطول المعروض بالدقائق والثواني القاعدة نفسها: قرّب الوقت إلى أعلى لأقرب ثانية كاملة أولًا، ثم نسّق تلك الثواني.

يحافظ return المبكر على ظهور BOOM على الشاشة: فبدونه، سيكتب الإطار التالي Fuse: 0 فوقه. للنص لون أيضًا، ويحوّله fuseText.color = Color.red إلى الأحمر.

challenge icon

التحدي

سهل

اجعل عدّاد موقف السيارات يُنقص الوقت المدفوع مسبقًا.

  1. في Update()، اطرح Time.deltaTime من timeLeft، من دون أن تقل القيمة عن 0، واعرض Mathf.CeilToInt(timeLeft) بالدقائق والثواني: 1:15.
  2. يضيف مفتاح المسافة 30 ثانية، حتى maxTime (2:00).
  3. عند الوصول إلى 0، اعرض EXPIRED باللون Color.red. ابدأ Update() بالتعليمة if (timeLeft == 0f) return; ليبقى كما هو.

اضغط «العب» وأضف إليه العملات: سيتوقف عند 2:00. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;
using TMPro;

public class ParkingMeter : MonoBehaviour
{
    public TMP_Text meterText;
    public float timeLeft = 60f;
    public float maxTime = 120f;

    void Update()
    {
        // أنقص timeLeft واعرضه بالدقائق والثواني؛ يضيف Space ‏30 ثانية
    }
}

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

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