Menu
CoddyTech

الربط في Inspector

جزء من قسم إنشاء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 8 من 60.

يمكن أيضًا توصيل زر في نافذة Inspector، من دون استخدام AddListener إطلاقًا. تبدأ قائمة On Click () الخاصة بالزر فارغة. تضيف علامة + صفًا؛ اسحب الكائن الذي يحتوي على النص البرمجي إلى خانة الكائن في الصف، وستعرض قائمة الدوال المنسدلة مكوّنات ذلك الكائن، وكلًّا من دواله العامة. اختر Jukebox > NextTrack، وسيستدعي كل نقر هذه الدالة:

public class Jukebox : MonoBehaviour
{
    public string[] tracks;
    private int current;

    public void NextTrack()
    {
        current = (current + 1) % tracks.Length;
        Debug.Log("Now playing: " + tracks[current]);
    }
}

تعرض القائمة المنسدلة الدوال التي تكون public، وتُرجع void، ولا تأخذ أي وسيط أو تأخذ وسيطًا واحدًا من النوع int أو float أو string أو bool أو Object، وتضبط قيمته في الصف. لا تظهر الدالة الخاصة NextTrack في القائمة، لذا لا يمكن اختيارها. يخزّن الصف الدالة بحسب اسمها: أعد تسمية NextTrack إلى SkipTrack، وسيعرض الصف <Missing Jukebox.NextTrack>، ولن تفعل النقرات شيئًا، من دون ظهور أي خطأ في Console.

تناسب الصفوف في نافذة Inspector الأزرار الموضوعة في المشهد: إذ يستطيع أي شخص في الفريق رؤية ما يستدعيه الزر وتغييره من دون فتح نص برمجي. يناسب AddListener في الشيفرة الأزرار التي تُنشأ أثناء تشغيل اللعبة، والاستدعاءات التي تمرر قيمة من متغير؛ كما يكتشف المصرّف تغيير اسم الدالة فيها. لا تظهر المستمعات المضافة من الشيفرة مطلقًا في قائمة On Click ()، لذا فإن الزر الموصول بالطريقتين يستدعي كليهما.

challenge icon

التحدي

سهل

اجعل الأزرار الثلاثة للجسر المتحرك تعمل في Drawbridge.cs.

  1. يستدعي صف «عند النقر ()» لكل زر Raise أو Lower أو ToggleLamp. أعد تسمية LowerBridge إلى Lower.
  2. اكتب public void Raise(): يتغير bridge.localRotation إلى 70 درجة حول المحور x، ويعرض statusText النص Bridge: up.
  3. اكتب public void ToggleLamp(): يشغّل warningLamp عندما تكون مطفأة، ويطفئها عندما تكون مشغّلة.

اضغط «العب»: يؤدي كل زر وظيفته. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;
using TMPro;

public class Drawbridge : MonoBehaviour
{
    public Transform bridge;
    public TMP_Text statusText;
    public GameObject warningLamp;

    public void LowerBridge()
    {
        bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
        statusText.text = "Bridge: down";
    }
}

جميع دروس إنشاء ألعاب حقيقية

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