OnEnable وOnDisable
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 57 من 67.
تُنفَّذ 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 على Player وعلى درعه، Bubble، الذي يبدأ مخفيًا. على Player، يشير target إلى Bubble، ويؤدي الضغط على Space إلى تشغيل Bubble وإيقافه؛ هذا الجزء مكتوب بالفعل.
اجعل كل Switchable يُبلّغ عن نفسه:
- في كل مرة يتم تشغيله، أضف 1 إلى عدّاد وسجّل اسمه و
onوالعدّاد بين قوسين، على سبيل المثالBubble on (2)؛ - في كل مرة يتم إيقافه، سجّل اسمه و
off:Bubble off.
عند بدء اللعبة، يسجّل Player Player on (1): فهو أيضًا يكون قيد التشغيل. اضغط على Play، واضغط Space بضع مرات، ثم اضغط على Check.
جرّب بنفسك
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أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب4المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي وفضاء العالمالسرعة القطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: طيار الطائرة المسيّرة10دورة حياة السكربت
Awake وStartUpdate وLateUpdateOnEnable وOnDisableترتيب دورة الحياةمراجعة: مسجّل دورة الحياة5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر