مؤقّت للعدّ التنازلي
جزء من قسم إنشاء ألعاب حقيقية في رحلة 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 إلى الأحمر.
التحدي
سهلاجعل عدّاد موقف السيارات يُنقص الوقت المدفوع مسبقًا.
- في
Update()، اطرحTime.deltaTimeمنtimeLeft، من دون أن تقل القيمة عن 0، واعرضMathf.CeilToInt(timeLeft)بالدقائق والثواني:1:15. - يضيف مفتاح المسافة 30 ثانية، حتى
maxTime(2:00). - عند الوصول إلى 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 ثانية
}
}
جميع دروس إنشاء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارمنصات متحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء لا نهاية له
ثلاثة مساراتعقبات أمامكتدرّب بنفسك: Playground لـ Unity