Menu
CoddyTech

المراجع أفضل من Find

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 59 من 85.

يمكن للبرنامج النصي الوصول إلى كائن آخر بأربع طرق: حقل تُعيّن قيمته في Inspector، أو البحث عن GameObject.Find بالاسم، أو البحث باستخدام وسم، أو البحث عن FindAnyObjectByType حسب النوع. بالنسبة إلى كائن موجود في المشهد منذ البداية، تستخدم شيفرة Unity حقل Inspector، وذلك لثلاثة أسباب:

  • السرعة. يُملأ المرجع قبل بدء اللعبة. يمر كل بحث عبر كائنات المشهد، والبحث في Update() يفعل ذلك في كل إطار.
  • الأمان. يتعطل الاسم المكتوب في سلسلة نصية عندما يعيد أحدهم تسمية الكائن: تُرجع Find القيمة null، ويظهر الخطأ لاحقًا عند السطر الذي يستخدمه. أما حقل Inspector الفارغ فيؤدي إلى UnassignedReferenceException، الذي يذكر اسم الحقل والبرنامج النصي.
  • الوضوح. يعرض Inspector ما يعتمد عليه البرنامج النصي. أما استدعاء Find فيخفي ذلك داخل الشيفرة.
// يُعيَّن مرة واحدة في Inspector: لا حاجة إلى البحث، وتغيير الاسم لا يؤثر في شيء
[SerializeField] private Transform door;

// يُبحث عنه في كل إطار، وتصبح قيمته null بعد تغيير اسم الباب
void Update()
{
    Transform d = GameObject.Find("Door").transform;
}

للبحث استخداماته: مع الكائنات التي لا تظهر إلا عند تشغيل اللعبة، مثل كائن يُنشأ أثناء اللعب، ومع البرامج النصية التي يجب أن تعمل في أي مشهد. وحتى في هذه الحالة، ابحث مرة واحدة في Start() واحتفظ بالنتيجة في حقل.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

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

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