InvokeRepeating, CancelInvoke
جزء من قسم الفيزياء وأسلوب اللعب في رحلة Unity على Coddy. الدرس 23 من 71.
يستدعي InvokeRepeating(nameof(Blink), 0.5f, 0.5f) الدالة Blink لأول مرة بعد 0.5 ثانية، ثم يستدعيها مجددًا كل 0.5 ثانية حتى يُلغى الاستدعاء. الرقم الأول هو التأخير قبل الاستدعاء الأول، والثاني هو المدة بين الاستدعاءات. يوقفها CancelInvoke(nameof(Blink))، أما CancelInvoke() من دون اسم فيوقف كل استدعاء Invoke حجزه البرنامج النصي.
يومض مصباح التحذير هذا حتى تضغط على Space، ثم يبقى مضاءً:
Light lamp;
void Start()
{
lamp = GetComponent<Light>();
InvokeRepeating(nameof(Blink), 0.5f, 0.5f);
}
void Blink()
{
lamp.enabled = !lamp.enabled;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
CancelInvoke(nameof(Blink));
lamp.enabled = true;
}
}كان المؤقت من فصل إنشاء العناصر سيؤدي المهمة نفسها باستخدام حقل float وفحص داخل Update(). مع InvokeRepeating، تتولى Unity متابعة الوقت وإجراء الاستدعاءات. يوضع الاستدعاء InvokeRepeating داخل Start(): فلو وضعته داخل Update()، لحجز استدعاءً متكررًا إضافيًا في كل إطار.
التحدي
سهلاجعل النافورة الحارة تثور ثلاث مرات وفق جدول زمني.
- في
Start()، استدعِInvokeRepeating(nameof(Erupt), 1f, 2f);. - اكتب
void Erupt(): أضف 1 إلىeruptions، واستدعِball.AddForce(Vector3.up * power, ForceMode.Impulse);وسجّل"Eruption " + eruptions. - في نهاية
Erupt()، عندما تكونeruptions == 3، استدعِCancelInvoke(nameof(Erupt));.
اضغط «العب»: ستُقذف الكرة إلى الأعلى ثلاث مرات، بفاصل ثانيتين. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// أطلق الثوران بعد 1 ثانية من Play، ثم كل 2 ثانية
}
// Erupt(): احسب عدد مرات الثوران، وادفع الكرة إلى الأعلى، وسجّل ذلك؛ توقّف بعد المرة الثالثة
}
جميع دروس الفيزياء وأسلوب اللعب
1الجسم الصلب (Rigidbody)
الجاذبية والكتلةالدفع باستخدام AddForceالقفز باستخدام دفعةFixedUpdate للفيزياءالسرعة المتجهةالأجسام الحركيةمراجعة: منصة الإطلاق4الكوروتينات
InvokeInvokeRepeating, CancelInvokeأول Coroutine لكالحلقات داخل الكوروتيناتإيقاف الكوروتيناتمراجعة: العد التنازلي10المشروع: الهروب من الحلبة
الحلبةالصيادونتدرّب بنفسك: Playground لـ Unity