Menu
CoddyTech

التدمير

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

تزيل 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

التحدي

متوسط

أزل العملات القديمة، واجعل مفتاح المسافة يزيل المزلق.

  1. احتفظ بالعملة الجديدة، GameObject coin = Instantiate(...);، ثم استدعِ Destroy(coin, 3f);.
  2. عند Input.GetKeyDown(KeyCode.Space)، استدعِ Destroy(gameObject);. سيؤدي Destroy(this) إلى إزالة النص البرمجي فقط.

اضغط على «العب»: تختفي كل عملة بعد 3 ثوانٍ، ويوقف مفتاح المسافة ظهور عملات جديدة. ثم اضغط على «تحقق».

جرّب بنفسك

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: دمّر المزلقة
    }
}

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

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