OnEnable و OnDisable
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 72 من 85.
تُنفَّذ OnEnable() في كل مرة يصبح فيها البرنامج النصي نشطًا: عندما يظهر الكائن لأول مرة (مباشرةً بعد Awake())، ومرة أخرى في كل مرة يُعرَض فيها الكائن باستخدام SetActive(true) أو يُعاد فيها تفعيل البرنامج النصي باستخدام enabled = true. تُنفَّذ OnDisable() في كل مرة يُخفى فيها الكائن، أو يُعطَّل فيها البرنامج النصي، أو يُدمَّر فيها الكائن.
يمكن لبوابة يفتحها برنامج نصي آخر ويغلقها باستخدام SetActive أن تسجل حالتها بنفسها:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}تسجل البوابة Portal open عند بدء المشهد. ويؤدي إخفاؤها ثم إظهارها مرة أخرى إلى تسجيل Portal closed، ثم Portal open، بينما لا تُنفَّذ Awake() وStart() مرة ثانية. لذا، يوضع في OnEnable() أي كود يجب تنفيذه عند كل ظهور، مثل إعادة ضبط مؤقت أو إحصاء الزيارات. عندما تكون البوابة مخفية، لا تُنفَّذ Update() الخاصة بها، ولهذا يُنفَّذ فتحها وإغلاقها بواسطة برنامج نصي على كائن آخر.
التحدي
متوسطاجعل كل كائن Switchable يبلّغ عند تفعيله وإلغاء تفعيله.
- أضف الحقل
int count;والدالةvoid OnEnable(): أضف 1 إلىcount، ثم سجّلname + " on (" + count + ")"، مثلBubble on (2). - أضف
void OnDisable()لتسجيلname + " off".
اضغط «العب» ثم اضغط على مفتاح المسافة: ستعرض وحدة التحكم Player on (1)، ثم Bubble on (1) وBubble off. ثم اضغط «تحقق».
جرّب بنفسك
using UnityEngine;
public class Switchable : MonoBehaviour
{
public GameObject target;
void Update()
{
if (target != null && Input.GetKeyDown(KeyCode.Space))
{
target.SetActive(!target.activeSelf);
}
}
// في كل مرة يُشغَّل فيها هذا الكائن: احسب عدد مرات تشغيله وسجّل "<name> on (<count>)"
// في كل مرة يُوقَف فيها تشغيله: سجّل "<name> off"
}
جميع دروس أساسيات البرمجة النصية في Unity
1أساسيات C# في Unity
مرحبًا يا Unityالمتغيراتالأعداد العشرية تحتاج إلى fالنص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مداره12دورة حياة السكربت
Awake و StartUpdate و LateUpdateOnEnable و OnDisableترتيب دورة الحياةمراجعة: مسجّل دورة الحياةتدرّب بنفسك: Playground لـ Unity