مؤقّت للعدّ التنازلي
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 4 من 56.
يحتفظ العدّ التنازلي بالوقت المتبقي في 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 إلى الأحمر.
التحدي
سهليعدّ عداد موقف السيارات الوقت المدفوع. اكتب دالة Update() في ParkingMeter.cs (يربط المشهد meterText):
- تبدأ
timeLeftعند 75 ثانية (اضبطها في نافذة Inspector) وتنخفض مع كل إطار، ولا تقل أبدًا عن 0. - يعرض
meterTextالوقت المتبقي بالدقائق والثواني، مقربًا إلى الثواني الكاملة للأعلى: من 75 إلى 74.01 يعرض1:15، وعندما يتبقى 0.4 ثانية يعرض0:01. - تُدخل ضغطة Space عملة: 30 ثانية إضافية، ولكن لا يتجاوز الوقت أبدًا
maxTime(120، وهو ما يظهر2:00). - عند 0، يعرض النص
EXPIREDباللون الأحمر (Color.red). ومنذ ذلك الحين يظل العداد عند 0، ولا تعود العملات تُضاف.
اضغط Play، وأضف إليه بضع عملات، ثم اضغط Check.
جرّب بنفسك
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 ثانية
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك