تشغيل اللوحات وإيقافها
جزء من قسم بناء ألعاب حقيقية في رحلة Unity على Coddy. الدرس 9 من 56.
الـلوحة هي صورة واجهة مستخدم، غالبًا ما تتمدد على كامل الشاشة، وتكون الأزرار والنصوص عناصر فرعية فيها. يؤدي استدعاء SetActive(false) على اللوحة إلى إخفائها مع كل ما بداخلها، ولا يمكن النقر على أزرارها أثناء إخفائها. عندما تكون ظاهرة، تستقبل صورتها النقرات الموجّهة إلى أي شيء خلفها، لذا لا يمكن الضغط على الأزرار الموجودة خلف لوحة تملأ الشاشة. تُفتح هذه الخريطة من زر في الزاوية، وتُغلق من زر على الخريطة:
public GameObject mapPanel;
public Button mapButton;
public Button closeButton;
void Start()
{
mapPanel.SetActive(false);
mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}يسهل تعديل اللوحات عندما تكون ظاهرة، لذا غالبًا ما تُحفَظ المشاهد وهي مفعّلة، وتخفيها الدالة Start(). أبقِ البرنامج النصي الذي يفتح اللوحة خارجها: لا يحصل كائن GameObject غير النشط على Start() أو Update()، لذا فإن البرنامج النصي الموجود على لوحة حُفظت وهي مخفية لن يربط أزرارها أبدًا. يُعد Canvas أو كائن مدير اللعبة، اللذان يظلان نشطين، مكانين مناسبين له. تحدد mapPanel.activeSelf ما إذا كانت اللوحة مفعّلة، لذا فإن mapPanel.SetActive(!mapPanel.activeSelf) يبدّل حالتها.
التحدي
سهلتحتاج لعبة المرج إلى قائمة. يوجد Menu.cs على Canvas (HUD)، ويربط المشهد حقوله. اللوحتان مفعّلتان في المشهد، لذا يسهل تحريرهما. اكتب Start() بحيث:
- عند بدء اللعبة، تكون
menuPanelوhelpPanelمخفيتين. - يفتح
menuButtonلوحة القائمة، ويغلقهاresumeButtonالموجود فيها. - يستبدل
helpButtonالموجود في لوحة القائمة لوحة القائمة بلوحة المساعدة، ويعيدbackButtonالموجود في لوحة المساعدة عرض لوحة القائمة. - أثناء فتح القائمة، لا يستطيع اللاعب المشي: يُعطَّل سكربت
moverعند فتح القائمة، ويُفعَّل مجددًا عند إغلاقها باستخدام Resume.
اضغط تشغيل، وامشِ، وافتح القائمة ثم المساعدة، وبعدها اضغط تحقّق.
جرّب بنفسك
using UnityEngine;
using UnityEngine.UI;
public class Menu : MonoBehaviour
{
public GameObject menuPanel;
public GameObject helpPanel;
public Button menuButton;
public Button resumeButton;
public Button helpButton;
public Button backButton;
public PlayerMover mover;
void Start()
{
// أخفِ اللوحتين، ثم اربط أزرار Menu وResume وHelp وBack بوظائفها
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس بناء ألعاب حقيقية
4المشاهد والمستويات
تحميل مشهدإعادة تشغيل المستوىالمستوى التاليالاحتفاظ بالبيانات بين المشاهدمراجعة: اختيار المستوى10مشروع: لعبة منصات ثلاثية الأبعاد
المسارالمنصات المتحركة2الأزرار والشاشات
الأزرار وonClickالتعبيرات Lambdaالربط في Inspectorتشغيل اللوحات وإيقافهاأشرطة الصحةمراجعة: متجر الترقيات5الحفظ باستخدام PlayerPrefs
حفظ رقمالتحميل بقيمة افتراضيةأعلى نتيجةحفظ الإعداداتمراجعة: العملات في البنك6مشروع: عدّاء بلا نهاية
ثلاثة مساراتعوائق أمامك