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

تشغيل اللوحات وإيقافها

جزء من قسم بناء ألعاب حقيقية في رحلة 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) يبدّل حالتها.

challenge icon

التحدي

سهل

تحتاج لعبة المرج إلى قائمة. يوجد 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 بوظائفها
    }
}
quiz iconاختبر نفسك

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

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