تنسيق الأرقام
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 3 من 56.
يظهر العدد عند ضمّه إلى سلسلة نصية بالطريقة التي يكتب بها C#: يعرض المؤقّت 12.34567، ويظهر العدد العشري الذي قيمته 2 على شكل 2، من دون أي منازل عشرية. تحدد سلسلة التنسيق في ToString() مظهره بدلًا من ذلك. يمثل كل 0 فيها رقمًا يُكتب دائمًا: 7.ToString("000") تصبح 007، و41.27f.ToString("0.0") تصبح 41.3، بعد التقريب إلى منزلة عشرية واحدة. وفي استيفاء السلاسل النصية، يأتي التنسيق نفسه بعد نقطتين: $"{coins:000}"، $"{topSpeed:0.0} m/s".
تكون قراءة الأوقات أسهل عند عرضها بالدقائق والثواني. حوّل الوقت أولًا إلى int، ما يؤدي إلى حذف الجزء الكسري؛ ثم تعطي القسمة الصحيحة على 60 عدد الدقائق الكاملة، وتعطي % 60 الثواني المتبقية. زمن دورة قدره 83.46 ثانية:
float lapTime = 83.46f;
int total = (int)lapTime; // 83
int minutes = total / 60; // 1
int seconds = total % 60; // 23
lapText.text = $"Lap: {minutes}:{seconds:00}"; // اللفة: 1:23يحافظ 00 على ظهور رقمين: من دونه، سيظهر زمن دورة قدره 64 ثانية على شكل 1:4 بدلًا من 1:04. وبما أن (int) يحذف الجزء الكسري بدلًا من تقريبه، فسيظهر الزمن 59.7 ثانية على شكل 0:59؛ أما التقريب فسيعرض 0:60 للحظة.
التحدي
سهلتعرض لوحة النتائج في لعبة الأركيد الأرقام كما هي. تمنحك ضغطة Space 100 نقطة مضروبة في قيمة الـcombo، وتزيد قيمة الـcombo بمقدار 0.5، ويحسب playTime الثواني التي لعبتها (تبدأ قيمته في Inspector عند 47.5). أبقِ العد كما هو، وغيّر طريقة كتابة النصوص الثلاثة:
scoreText: النتيجة بستة أرقام، مثلScore: 000450.comboText: قيمة الـcombo بمنزلة عشرية واحدة، مثلCombo: x2.5، وتكونCombo: x1.0في البداية.timeText: الدقائق والثواني الكاملة، مثلTime: 2:07. تظهر الثواني دائمًا برقمين، ولا تُقرَّب أبدًا إلى الأعلى.
اضغط تشغيل، وسجّل نقاطًا عدة مرات، ثم اضغط تحقّق.
جرّب بنفسك
using UnityEngine;
using TMPro;
public class Scoreboard : MonoBehaviour
{
public TMP_Text scoreText;
public TMP_Text comboText;
public TMP_Text timeText;
public int score;
public float combo = 1f;
public float playTime;
void Update()
{
playTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
score += (int)(100 * combo);
combo += 0.5f;
}
scoreText.text = "Score: " + score;
comboText.text = "Combo: x" + combo;
timeText.text = "Time: " + playTime;
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك