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.
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
menuPanelvehelpPanelgizli olsun. menuButtonmenü panelini açsın,resumeButtonise kapatsın.- Menü panelindeki
helpButton, menü panelini yardım paneliyle değiştirsin; yardım panelindekibackButtonise geri dönsün. - Menü açıkken oyuncu yürüyemesin: menü açıldığında
moverbetiğ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
}
}
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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki Paralar