Menu
CoddyTech

הפעלה וכיבוי של פאנלים

חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 9 מתוך 60.

לוח הוא תמונת ממשק משתמש, שנמתחת לעיתים קרובות על פני כל המסך, ושכפתורים וטקסטים הם רכיבים צאצאים שלה. הקריאה 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() מסתירה אותם. השאר את הסקריפט שפותח לוח מחוץ ללוח עצמו: אובייקט משחק לא פעיל אינו מקבל קריאות ל-Start() או ל-Update(), ולכן סקריפט שנמצא על לוח שנשמר כשהוא מוסתר לעולם לא יגדיר את הכפתורים שלו. ה-Canvas או אובייקט מנהל המשחק, שנשארים פעילים, הם מקומות מתאימים עבורו. mapPanel.activeSelf מציין אם הלוח מופעל, ולכן mapPanel.SetActive(!mapPanel.activeSelf) הופך את מצבו.

challenge icon

אתגר

קל

הוסיפו תפריט למשחק באחו: כתבו Start() בתוך Menu.cs.

  1. הסתירו את menuPanel ואת helpPanel באמצעות SetActive(false).
  2. לחיצה על menuButton מציגה את התפריט ומגדירה את mover.enabled = false; לחיצה על resumeButton מסתירה אותו ומגדירה את mover.enabled = true.
  3. לחיצה על helpButton מסתירה את התפריט ומציגה את העזרה; לחיצה על backButton עושה את ההפך.

לחצו על "שחק" ופתחו את התפריט: השחקן לא יכול ללכת עד שלוחצים על 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
    }
}

כל השיעורים ביחידה בניית משחקים אמיתיים

תרגלו בעצמכם: Unity אונליין