Menu
CoddyTech

إضافة مكوّن

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

تضيف gameObject.AddComponent<T>() مكوّنًا جديدًا من النوع T إلى الكائن أثناء تشغيل اللعبة، وتعيده كي تتمكن من إعداده في الأسطر التالية. ينتمي المكوّن إلى GameObject، الذي يصل إليه البرنامج النصي من خلال gameObject. تمنح هذه النار نفسها ضوءًا برتقاليًا دافئًا عند بدء اللعبة:

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

يدوم المكوّن المضاف بهذه الطريقة طوال فترة تشغيل اللعبة. أوقف «العب» وسيعود الكائن إلى حالته المحفوظة في المشهد، دون Light. برامجك النصية الخاصة هي أيضًا مكوّنات: تضيف gameObject.AddComponent<Spinner>() مكوّن Spinner يبدأ العمل مثل أي برنامج نصي آخر.

يمكن إضافة معظم المكوّنات أكثر من مرة، لكن بعضها لا يمكن إضافته إلا مرة واحدة: لا يحتوي الكائن على أكثر من Rigidbody واحد، وستظهر رسالة تحذير في Console عند طلب إضافة مكوّن ثانٍ بدلًا من ذلك: Can't add component 'Rigidbody'. يتحقق الكود الذي قد يعمل أكثر من مرة مما إذا كان الكائن يحتوي بالفعل على المكوّن قبل إضافته.

challenge icon

التحدي

متوسط

يهزّ زر المسافة شجرة النخيل، وتسقط جوزة الهند.

  1. في Update()، عند Input.GetKeyDown(KeyCode.Space)، أضف Rigidbody باستخدام gameObject.AddComponent<Rigidbody>().
  2. أضِفه فقط عندما لا يكون لجوزة الهند واحد: !TryGetComponent(out Rigidbody rb). ضغطة ثانية على زر المسافة لا تضيف Rigidbody ثانية.

اضغط «العب» ثم اضغط على زر المسافة: تسقط جوزة الهند على الرمال. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: أضف مكوّن Rigidbody إذا لم تكن ثمرة جوز الهند تحتوي عليه بعد
    }
}

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

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