Menu
CoddyTech

عرض النتيجة

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

إن الخاصية text للنص هي سلسلة نصية، لذا يجب تحويل الرقم إلى نص قبل عرضه. يؤدي ضمّه إلى سلسلة نصية باستخدام + إلى ذلك: تصبح "Wood: " + wood هي Wood: 12 عندما تكون قيمة wood هي 12، وتكون wood.ToString() هي 12. أما قيمة int وحدها فلا تصلح: يفشل woodText.text = wood; بالخطأ CS0029: لا يمكن تحويل النوع 'int' ضمنيًا إلى النوع 'string'.

يُخزَّن الرقم في حقل من النوع int، والنص يعرضه فقط. هناك دالة واحدة تعيد كتابة النص انطلاقًا من الحقل؛ وكل تغيير في الرقم يستدعيها، وكذلك Start()، لذا يعرض الإطار الأول القيمة الفعلية بدلًا مما أُدخِل في نافذة Inspector. هنا، يقطع الضغط على Space ثلاثة جذوع:

public TMP_Text woodText;
private int wood;

void Start()
{
    ShowWood();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        wood += 3;
        ShowWood();
    }
}

void ShowWood()
{
    woodText.text = "Wood: " + wood;
}

لا يتغير النص إلا عندما تتغير قيمة wood. إعادة كتابته في كل استدعاء لـ Update() ستبدو كما هي، لكنها ستنشئ سلسلة نصية جديدة 60 مرة في الثانية بلا داعٍ. والترتيب مهم: لو استُدعيت ShowWood() قبل wood += 3، لعرضت العدد القديم، أي سيتأخر العرض ضغطة واحدة.

challenge icon

التحدي

سهل

اعرض عدد البذور والأشجار لدى البستاني على الشاشة.

  1. في Gardener.cs، اكتب void ShowCounts() لتعيين seedsText.text إلى "Seeds: " + seeds وtreesText.text إلى "Trees: " + trees.
  2. استدعِها في دالة Start() جديدة، وفي عبارة if الخاصة بالزراعة بعد trees++;.

اضغط على «العب»: ستظهر النصوص Seeds: 5 وTrees: 0، وتتغير مع كل شتلة. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;
using TMPro;

public class Gardener : MonoBehaviour
{
    public float speed = 4f;
    public int seeds = 10;
    public GameObject saplingPrefab;
    public TMP_Text seedsText;
    public TMP_Text treesText;
    private int trees;

    void Update()
    {
        float move = Input.GetAxisRaw("Horizontal");
        transform.Translate(move * speed * Time.deltaTime, 0f, 0f);

        if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
        {
            Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
            Instantiate(saplingPrefab, spot, Quaternion.identity);
            seeds--;
            trees++;
        }
    }

    // اعرض Seeds: وTrees: في النصين منذ الإطار الأول
}

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

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