Menu
CoddyTech

المراجع في Inspector

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 43 من 85.

يمكن أن يحتوي الحقل على كائن آخر. امنحه نوعًا مثل Transform أو GameObject، وستعرض نافذة Inspector خانة فارغة تملؤها بسحب كائن من نافذة Hierarchy وإفلاته فيها. يتبع هذا البرنامج النصي للكاميرا أي كائن يُسحب إلى player، ويبقى على ارتفاع 3 وحدات فوقه وعلى بُعد 6 وحدات خلفه:

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

تُظهر الخانة التي تُترك فارغة القيمة None، ويؤدي أول سطر يستخدمها إلى ظهور الخطأ في كل إطار: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. ويوضح السطر التالي من الرسالة ما يجب فعله: You probably need to assign the player variable of the CameraFollow script in the inspector. فهو يذكر اسم الحقل والبرنامج النصي، لتعرف أي خانة عليك ملؤها.

ينبغي أن تعمل بعض البرامج النصية حتى عندما تكون الخانة فارغة. تجعل Unity مقارنة الخانة الفارغة مساوية لـ null، لذا يتحقق البرنامج النصي قبل استخدامها. إذا أحيط السطر في Update() بالشرط if (player != null)، فستبقى الكاميرا التي لا تملك لاعبًا في مكانها بدلًا من إظهار خطأ.

challenge icon

التحدي

متوسط

أرسل كل حارس إلى الموضع الذي يحدده له Inspector.

  1. أضف الحقل public Transform post;. يحتوي الموضع المخصص لـ Guard1 على Post1؛ أما الموضع المخصص لـ Guard2 فهو فارغ.
  2. في Update()، عندما يكون post == null، نفّذ return; حتى يبقى الحارس الذي ليس لديه موضع في مكانه.
  3. ثم حرّكه باستخدام Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).

اضغط على «العب»: يمشي Guard1 إلى موضعه وينتظر Guard2. ثم اضغط على «تحقق».

جرّب بنفسك

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: الـTransform الذي يسير إليه هذا الحارس، ويُحدَّد في Inspector
    public float speed = 2f;

    void Update()
    {
        // سِر إلى post بسرعة speed. يبقى الحارس في مكانه إذا كانت خانة post فارغة.
    }
}

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

تدرّب بنفسك: Playground لـ Unity