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

التدمير

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

تزيل Destroy(obj) كائن GameObject من المشهد، بما في ذلك أطفاله. تؤخر الوسيطة الثانية إزالته: تزيله Destroy(obj, 2f) بعد ثانيتين من الآن، ويواصل البرنامج النصي الذي استدعاها التنفيذ فورًا. يطلق هذا المدفع النار عند الضغط على Space، ويختفي كل مقذوف يصنعه بعد ثانيتين:

public GameObject bulletPrefab;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
        Destroy(bullet, 2f);
    }
}

مرّر النسخة، لا العنصر الأصلي: يُرفض Destroy(bulletPrefab) مع الرسالة Destroying assets is not permitted to avoid data loss. ومرّر كائن GameObject عندما تقصد الكائن نفسه. داخل البرنامج النصي، يشير gameObject إلى الكائن الذي يوجد عليه البرنامج النصي، لذا فإن Destroy(gameObject) يزيل ذلك الكائن، بينما يزيل Destroy(this) البرنامج النصي وحده ويُبقي الكائن قائمًا.

لا يحدث التدمير فورًا. تزيل Unity الكائن في نهاية الإطار الحالي، بعد استدعاءات Update() وLateUpdate() الخاصة بالإطار، لذا تظل الأسطر التي تلي Destroy قيد التنفيذ، ويظل من الممكن العثور على الكائن حتى ينتهي الإطار.

challenge icon

التحدي

متوسط

تُسقط Chute عملة كل ثانية؛ وهذا الجزء مكتوب بالفعل. غيّره بحيث:

  • تختفي كل عملة بعد 3 ثوانٍ من ظهورها، بحيث لا يزيد عدد العملات الموجودة في الوقت نفسه عن 3؛
  • يؤدي الضغط على Space إلى تدمير المِزلاق نفسه، فلا تسقط عملات أخرى. أما العملات التي سقطت بالفعل فتظل تختفي في موعدها.

اضغط Play، وشاهد لبضع ثوانٍ، ثم اضغط Space، ثم Check.

جرّب بنفسك

using UnityEngine;

public class CoinChute : MonoBehaviour
{
    public GameObject coinPrefab;
    public float interval = 1f;
    float timer;

    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= interval)
        {
            Instantiate(coinPrefab, transform.position, Quaternion.identity);
            timer -= interval;
        }

        // Space: دمّر المزلقة
    }
}
quiz iconاختبر نفسك

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

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