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

القوالب وInstantiate

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

‏prefab هو كائن GameObject محفوظ كقالب: اسحب كائنًا من Hierarchy إلى نافذة Project، وسيحفظه Unity مع جميع مكوّناته وقيم Inspector. لا يكون الـprefab نفسه في المشهد. يحصل البرنامج النصي على أحدها عبر حقل، مثل أي مرجع آخر: عرّف public GameObject parcelPrefab; واسحب الـprefab إلى ذلك الحقل في Inspector.

تنشئ Instantiate(prefab, position, rotation) نسخة من الـprefab في المشهد وتُرجعها. تُسقط طائرة التوصيل المسيّرة هذه طردًا عند موضعها في كل مرة يُضغط فيها على Space. تعني Quaternion.identity عدم وجود دوران:

public GameObject parcelPrefab;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Instantiate(parcelPrefab, transform.position, Quaternion.identity);
    }
}

يضيف كل ضغط كائنًا آخر إلى Hierarchy، واسمه Parcel(Clone). يبقى الـprefab كما هو، لذا تبدأ كل نسخة بالقيم نفسها. يُعد GetKeyDown مهمًا هنا: فمع GetKey، يؤدي الضغط المستمر على Space لمدة نصف ثانية إلى إسقاط نحو 30 طردًا، واحدًا في كل إطار.

challenge icon

التحدي

متوسط

تحرّك الأسهم اللاعب بالفعل. اجعل كل نقرة تُنشئ عملة فوقه:

  • أضف حقلًا عامًا من النوع GameObject باسم coinPrefab. سيضع المشهد عنصر Coin الجاهز فيه بمجرد وجود الحقل.
  • عند النقر على زر الفأرة الأيسر، أنشئ نسخة واحدة من العملة على ارتفاع وحدتين فوق اللاعب، من دون دوران.

اضغط على Play، وتحرك وانقر بضع مرات، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class CoinDropper : MonoBehaviour
{
    public float speed = 4f;
    // coinPrefab: حقل GameObject عام، يحتوي على القالب الجاهز Coin

    void Update()
    {
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
        }

        // النقر: أنشئ عملة على ارتفاع 2 وحدة فوق اللاعب
    }
}
quiz iconاختبر نفسك

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

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