القوائم في 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> خاصة بها، واحتفظ بقائمة من هذه الفئات.
التحدي
سهلعَلِق ميرا وتوم عند جسر متهدّم. اكتب مربع الحوار في 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: السطر التالي، أو نهاية المحادثة
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس هندسة الألعاب في Unity
1المكوّنات لا التسلسلات الهرمية
مكوّنات صغيرةسكربت أساسي للعدومكوّنات مجرّدةتعمل المكوّنات معًامراجعة: برج دفاعي معياري4البيانات المتسلسلة
الأصناف القابلة للتسلسلالقوائم في Inspectorالتعدادات في Inspectorمراجعة: جدول الغنائم10مشروع: الناجي في الساحة
البطلأنواع الأعداء