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 / 60.

Bir panel, genellikle tüm ekranı kaplayacak şekilde genişletilmiş, alt öğeleri düğmeler ve metinler olan bir UI Görselidir. Paneldeki SetActive(false), içindeki her şeyle birlikte paneli gizler ve panel gizliyken düğmelerine tıklanamaz. Panel gösterilirken 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 haritanın üzerindeki 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. Paneli açan betiği o panelden ayrı tut: etkin olmayan bir GameObject, Start() veya Update() çağrısı almaz; bu nedenle gizli kaydedilmiş bir paneldeki betik, düğmelerini asla ayarlayamaz. Etkin kalmaya devam eden Canvas veya 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) panelin durumunu değiştirir.

challenge icon

Görev

Kolay

Çayır oyununa bir menü ekle: Menu.cs içinde Start() yaz.

  1. menuPanel ve helpPanel öğelerini SetActive(false) ile gizle.
  2. menuButton menüyü gösterir ve mover.enabled = false ayarını yapar; resumeButton menüyü gizler ve mover.enabled = true ayarını yapar.
  3. helpButton menüyü gizler ve yardım panelini gösterir; backButton bunun tersini yapar.

“Oyna” düğmesine basıp menüyü aç: oyuncu, “Sürdür” düğmesine basılana kadar yürüyemez. Ardından “Kontrol et” düğmesine 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 gizle, ardından Menu, Resume, Help ve Back düğmelerini bağla
    }
}

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

Kendi başına pratik yap: Unity playground