الربط في Inspector
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 8 من 56.
يمكن أيضًا توصيل زر من نافذة 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 ()، لذا فإن الزر الموصول بالطريقتين يستدعي كليهما.
التحدي
سهلللجسر المتحرك في القلعة ثلاثة أزرار، وقد رُبطت في نافذة Inspector بالبرنامج النصي Drawbridge على BridgeControl. لا يعمل أيٌّ منها بعد. حدّد RaiseButton وLowerButton وLampButton في نافذة Hierarchy واقرأ كل صف من صفوف On Click (): فهو يذكر الطريقة التي يستدعيها النقر. اجعل الأزرار الثلاثة تعمل، وذلك بتغيير Drawbridge.cs فقط:
- إحدى الطرق مكتوبة بالفعل، لكن باسم آخر. غيّر اسمها إلى الاسم الذي يستدعيه صفها.
- يؤدي رفع الجسر إلى تدوير
bridgeبمقدار 70 درجة حول x (أيlocalRotation)، ويعرضBridge: upفيstatusText. - يشغّل زر المصباح
warningLampإذا كان مطفأً، ويطفئه إذا كان مضاءً.
اضغط Play، وجرّب كل زر، ثم اضغط Check.
جرّب بنفسك
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";
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك