البحث بالاسم
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 42 من 67.
تبحث GameObject.Find("Player") في المشهد عن كائن نشط يحمل هذا الاسم بالضبط، وتعيده، أو تعيد null إذا لم يوجد. يجنّبك ذلك ربط حقل في Inspector، لكن له ثمن: إذ يبحث في كل كائنات المشهد. لذا استدعِها مرة واحدة في Start()، واحتفظ بالنتيجة في حقل. تعثر كاميرا المراقبة هذه على Player عند بدء اللعبة، وتراقبه في كل إطار:
private Transform player;
void Start()
{
player = GameObject.Find("Player").transform;
}
void Update()
{
transform.LookAt(player);
}يجب أن يتطابق الاسم تمامًا، بما في ذلك الأحرف الكبيرة والمسافات: "player" أو "Player " لن يعثر على شيء. كما أن Find تتخطى الكائنات غير النشطة (المخفية). يُعيد البحث الفاشل null بهدوء، ويظهر الخطأ في السطر التالي الذي يستخدم النتيجة: هنا، يتسبب .transform في حدوث NullReferenceException. يعثر مسار مثل "Car/Wheel" على Wheel، وهو عنصر ابن لـ Car.
التحدي
متوسطيُبلغ الروبوت عن بُعد الهدف عنه.
- في
Start()، اعثر على الكائن المسمىGoalواحتفظ بمكوّن Transform الخاص به فيgoal. - في كل مرة يُضغط فيها مفتاح المسافة، سجّل المسافة من الروبوت إلى الهدف، مثل
Distance to goal: 5.
قد يتحرك الهدف، لذا قِس المسافة لحظة الضغط على مفتاح المسافة.
اضغط تشغيل، وانقر داخل اللعبة واضغط على مفتاح المسافة، ثم اضغط تحقّق.
جرّب بنفسك
using UnityEngine;
public class Beacon : MonoBehaviour
{
private Transform goal;
void Start()
{
// اعثر على الكائن المسمّى Goal واحتفظ بالمكوّن Transform الخاص به في goal.
}
void Update()
{
// Space: سجّل المسافة إلى الهدف.
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر8العثور على الأشياء
البحث بالاسمالوسومالبحث حسب النوعالمراجع أفضل من البحثNull في Unityمراجعة: أقرب عملة