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

القوائم في Inspector

جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 16 من 50.

القائمة التي تحتوي على عناصر [System.Serializable] هي جدول تملؤه في Inspector. يسلك هذا الحارس مسارًا من المحطات وينتظر عند كل منها للمدة التي يحددها العنصر:

[System.Serializable]
public class Stop
{
    public Transform point;
    public float wait = 1f;
}

public class Patrol : MonoBehaviour
{
    public float speed = 3f;
    public List<Stop> stops;
    private int current;
    private float waited;

    void Update()
    {
        Stop stop = stops[current];
        transform.position = Vector3.MoveTowards(transform.position, stop.point.position, speed * Time.deltaTime);
        if (transform.position != stop.point.position) return;
        waited += Time.deltaTime;
        if (waited >= stop.wait)
        {
            waited = 0f;
            current = (current + 1) % stops.Count;
        }
    }
}

يعرض Inspector قائمة Stops مع عدد عناصرها وقائمة قابلة للطي لكل عنصر: Element 0 وElement 1 وهكذا، ويحتوي كل منها على Point وWait. يضيف الزر + عنصرًا، ويحذف الزر ناقص العنصر المحدد، ويسمح المقبض الموجود على يسار الصف بسحبه إلى موضع جديد في المسار. يقرأ الكود القائمة كالمعتاد: stops.Count من العناصر، وstops[current].point، ويعيد (current + 1) % stops.Count إلى المحطة الأولى بعد الأخيرة. يمكن لمصمم المستوى أن يحدد للحارس محطة واحدة ثلاثة توقفات ولحارس آخر عشرة، من دون تعديل البرنامج النصي.

تُعرض المصفوفة، public Stop[] stops;، بالطريقة نفسها. ينسخ زر + في Unity العنصر الأخير، لذا تبدأ المحطة الجديدة بالنقطة ومدة الانتظار نفسيهما للعنصر الذي فوقها. لا يعرض Unity قائمة متداخلة ولا يحفظها، مثل List<List<Stop>>، كما لا يدعم القاموس. بدلًا من ذلك، غلّف القائمة الداخلية في فئة [Serializable]، مثل Route التي تحتوي على قائمة List<Stop> خاصة بها، واحتفظ بقائمة من هذه الفئات.

challenge icon

التحدي

سهل

عَلِق ميرا وتوم عند جسر متهدّم. اكتب مربع الحوار في Dialogue.cs على واجهة HUD. يربط المشهد box وspeakerText وlineText، ويحتوي على المحادثة جاهزةً لقائمة باسم lines.

  • صرّح عن فئة Line تتضمن سلسلتين نصيتين عامتين، speaker وtext، يمكن لـ Inspector عرضهما، وأضف إلى Dialogue قائمة عامة من النوع List<Line> باسم lines.
  • في البداية، يعرض المربع السطر الأول: المتحدث في speakerText ونصه في lineText.
  • كل ضغطة على Space تعرض السطر التالي. يمكن أن تضم المحادثة أي عدد من الأسطر، لذا اعتمد على عدد عناصر القائمة.
  • تؤدي ضغطة Space عند السطر الأخير إلى إخفاء المربع وتسجيل Dialogue over. بعد ذلك، لا تفعل Space شيئًا.

اضغط Play، واقرأ المحادثة باستخدام Space، ثم اضغط Check.

جرّب بنفسك

using UnityEngine;
using TMPro;

public class Dialogue : MonoBehaviour
{
    public GameObject box;
    public TMP_Text speakerText;
    public TMP_Text lineText;

    void Start()
    {
        // اعرض السطر الأول
    }

    void Update()
    {
        // Space: السطر التالي، أو نهاية المحادثة
    }
}
quiz iconاختبر نفسك

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

جميع دروس هندسة الألعاب في Unity