Menu
CoddyTech

Panelleri Açma ve Kapama

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 9 / 56.

Panel, genellikle tüm ekrana yayılmış ve alt öğeleri düğmeler ile metinler olan bir UI Image'dır. Paneldeki SetActive(false), içindeki her şeyle birlikte paneli gizler ve gizliyken düğmelerine tıklanamaz. Gösterildiğinde, görseli altındaki öğeler için yapılan tıklamaları alır; bu nedenle tam ekran bir panelin arkasındaki düğmelere basılamaz. Bu harita köşedeki bir düğmeyle açılır ve haritadaki bir düğmeyle kapanır:

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));
}

Paneller gösterilirken düzenlenmeleri daha kolay olduğundan sahneler genellikle paneller açıkken kaydedilir ve Start() onları gizler. Bir paneli açan betiği o panelin dışında tut: etkin olmayan bir GameObject Start() veya Update() çağrısı almaz; bu nedenle gizli olarak kaydedilmiş bir paneldeki betik, düğmelerini hiçbir zaman ayarlayamaz. Canvas veya etkin kalacak bir oyun yöneticisi nesnesi, betik için uygun yerlerdir. mapPanel.activeSelf panelin açık olup olmadığını belirtir; dolayısıyla mapPanel.SetActive(!mapPanel.activeSelf) durumunu değiştirir.

challenge icon

Görev

Kolay

Çayır oyununun bir menüye ihtiyacı var. Menu.cs, Canvas (HUD) üzerinde bulunur ve sahne alanlarını bağlar. Her iki panel de sahnede açık olduğundan düzenlemeleri kolaydır. Start() metodunu şöyle yaz:

  • Oyun başladığında menuPanel ve helpPanel gizli olsun.
  • menuButton menü panelini açsın, resumeButton ise kapatsın.
  • Menü panelindeki helpButton, menü panelini yardım paneliyle değiştirsin; yardım panelindeki backButton ise geri dönsün.
  • Menü açıkken oyuncu yürüyemesin: menü açıldığında mover betiği devre dışı bırakılsın, Resume ile menü kapatıldığında yeniden etkinleştirilsin.

Play'e bas, yürü, menüyü ve yardım panelini aç, ardından Check'e bas.

Kendin dene

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()
    {
        // Her iki paneli de gizle, ardından Menu, Resume, Help ve Back düğmelerini bağla
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler