Menu
CoddyTech
flag Ar iconالعربيةdown icon

تنسيق الأرقام

جزء من قسم بناء ألعاب حقيقية في رحلة 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 للحظة.

challenge icon

التحدي

سهل

تعرض لوحة النتائج في لعبة الأركيد الأرقام كما هي. تمنحك ضغطة 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;
    }
}
quiz iconاختبر نفسك

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

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