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

Invoke

جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 21 من 63.

يستدعي Invoke("Explode", 3f) طريقة السكربت نفسه Explode مرة واحدة بعد 3 ثوانٍ من الآن، ويواصل الكود الذي يليه التنفيذ فورًا. يعثر Unity على الطريقة باستخدام اسمها المُعطى كسلسلة نصية، ولا تأخذ الطريقة أي معاملات. تنفجر هذه القنبلة بعد 3 ثوانٍ من بدء اللعبة:

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

لأن الاسم سلسلة نصية، لا يستطيع المترجم التحقق منه. يُترجم Invoke("Explod", 3f) بنجاح، وبعد 3 ثوانٍ تسجّل Unity الرسالة Trying to Invoke method: Bomb.Explod couldn't be called. بدلًا من حدوث الانفجار. تحلّ nameof في C# هذه المشكلة: nameof(Explode) هي السلسلة النصية "Explode"، التي ينشئها المترجم من اسم تحقق منه، لذا فإن وجود خطأ مطبعي فيها يؤدي إلى خطأ في الترجمة تراه قبل تشغيل اللعبة. اكتب Invoke(nameof(Explode), 3f);.

challenge icon

التحدي

سهل

الـPlatform بين الحافتين منصة متداعية. خاصية Rigidbody فيها حركية، لذا تظل معلقة في الهواء. اكتب نص Crumble البرمجي الخاص بها:

  • عندما يهبط اللاعب عليها، تنتظر delay ثانية واحدة (1 في Inspector)، ثم تسقط.
  • السقوط هو أسلوب اسمه Fall: يفعّل فيزياء المنصة (isKinematic = false) ويسجّل Crumble!.
  • قبل أن يلمسها اللاعب، تبقى المنصة في مكانها.

استخدم nameof لاسم الأسلوب. اضغط على Play وامشِ على المنصة باستخدام الأسهم، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // عندما يهبط اللاعب: اجعل المنصة تسقط بعد delay ثانية
    }

    // Fall(): فعّل فيزياء المنصة وسجّل Crumble!
}
quiz iconاختبر نفسك

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

جميع دروس الفيزياء وأسلوب اللعب