المكوّنات المفقودة
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 45 من 85.
عندما لا يكون المكوّن الذي تطلبه موجودًا على الكائن، لا يمنعك GetComponent من المتابعة. في المحرر، يعيد لك بديلًا يُقارن على أنه null، ويُصدر Unity استثناءً في أول مرة يستخدم فيها الكود هذا البديل. ينبغي لهذه الكرة أن تقفز عند الضغط على Space، لكن لم يُضف إليها أحد مكوّن Rigidbody:
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(Vector3.up * 300f);
}
}عند الضغط على Space، تظهر الرسالة MissingComponentException: There is no 'Rigidbody' attached to the "Ball" game object, but a script is trying to access it.. تذكر الرسالة النوع المفقود والكائن. أضف المكوّن في Inspector، أو اطلبه أولًا عندما يكون من المحتمل أن يكون غيابه عن الكائن مقصودًا. تُعيد TryGetComponent(out rb) القيمة true وتملأ rb عندما يكون المكوّن موجودًا، وتُعيد false من دون خطأ عندما لا يكون موجودًا (تتيح out للطريقة إعادة قيمة عبر المتغير):
bool canHop;
void Start()
{
canHop = TryGetComponent(out rb);
}بعد ذلك، لا تدفع Update() الكرة إلا if (canHop). خارج المحرر، في لعبة مبنية، تُعيد GetComponent قيمة null عادية بدلًا من ذلك، لذا يظهر الخطأ نفسه هناك على هيئة NullReferenceException.
التحدي
متوسطلا يحتوي المصباح 2 على ضوء: اجعل مفتاح المسافة يتجاوزه، وأظهر أنه معطّل.
- في
Start()، استبدل سطرGetComponentبـhasBulb = TryGetComponent(out bulb);، مع حقلbool hasBulb;. - عندما تكون قيمة
hasBulbخاطئة، لوّن المصباح:GetComponent<Renderer>().material.color = Color.gray;. - في
Update()، بدّل حالة الضوء فقط عندما تكون قيمةhasBulbصحيحة.
اضغط على «العب» ثم اضغط على مفتاح المسافة: ستتبدّل حالة المصابيح السليمة، من دون ظهور أي خطأ. ثم اضغط على «تحقق».
جرّب بنفسك
using UnityEngine;
public class LampSwitch : MonoBehaviour
{
Light bulb;
void Start()
{
bulb = GetComponent<Light>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
bulb.enabled = !bulb.enabled;
}
}
}
جميع دروس أساسيات البرمجة النصية في Unity
1أساسيات C# في Unity
مرحبًا يا Unityالمتغيراتالأعداد العشرية تحتاج إلى fالنص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مدارهتدرّب بنفسك: Playground لـ Unity