Menu
CoddyTech
flag Ar iconالعربيةdown icon

البحث بالاسم

جزء من قسم أساسيات البرمجة النصية في 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.

challenge icon

التحدي

متوسط

يُبلغ الروبوت عن بُعد الهدف عنه.

  • في 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: سجّل المسافة إلى الهدف.
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس أساسيات البرمجة النصية في Unity