Düğmeler ve onClick
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 6 / 56.
GameObject > UI > Button - TextMeshPro bir düğme ekler: tıklanacak bir Image, bir Button bileşeni ve etiketi için bir Text (TMP) alt öğesi. Button'ın onClick özelliği bir olaydır; tıklama düğmenin üzerindeyken bırakıldığında çağırdığı yöntemlerin listesidir. Bir betik, Start() içinde bir kez AddListener ile kendi yöntemini bu listeye ekler. Button, UnityEngine.UI ad alanında bulunur:
using UnityEngine;
using UnityEngine.UI;
public class Doorbell : MonoBehaviour
{
public Button bellButton;
private int rings;
void Start()
{
bellButton.onClick.AddListener(Ring);
}
void Ring()
{
rings++;
Debug.Log("Ding! " + rings);
}
}AddListener(Ring), parantez kullanmadan yöntemin kendisini iletir. AddListener(Ring()) ise Ring'i hemen çağırır ve döndürdüğü değeri iletir; bu değer hiçbir şey olmadığı için kod derlenmez: Argument 1: cannot convert from 'void' to 'UnityEngine.Events.UnityAction'. Bir dinleyici parametre almaz ve void döndürür. Update() içinde eklenirse aynı yöntem her karede listeye yeniden eklenir ve tek bir tıklama yüzlerce kez zil çaldırır. Tıklama yalnızca düğmenin kendisi üzerinde olduğunda sayılırken, Input.GetMouseButtonDown(0) herhangi bir yere tıklanınca true olur.
Bir düğmenin interactable özelliği kullanılıp kullanılamayacağını belirler. bellButton.interactable = false; düğmeyi Disabled Color ile renklendirir ve tekrar true yapılana kadar dinleyicileri çağrılmaz; böylece oyuncu o anda hangi düğmelerin çalıştığını görür. Telefonda aynı düğmelere dokunulur.
Görev
KolayKulenin asansöründe Yukarı ve Aşağı düğmeleri var. Lift.cs dosyasını yaz (sahne, upButton, downButton ve floorText öğelerine bağlanır):
Start()içinde,upButtonöğesini asansörü bir kat yukarı çıkaran bir yönteme,downButtonöğesini ise asansörü bir kat aşağı indiren bir yönteme bağla.- Katlar 0 ile
topFloor(3) arasında değişir. Asansörün y konumu = kat xfloorHeight(3); yani 2. katta y konumu 6 olur. x ve z değerleri olduğu gibi kalır. floorText, başlangıçtan itibaren katıFloor: 2biçiminde gösterir.- En üst katta Yukarı düğmesi, 0. katta ise Aşağı düğmesi etkileşimli olmaz.
Play'e bas, en üst kata çıkıp geri dön, ardından Check'e bas.
Kendin dene
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class Lift : MonoBehaviour
{
public Button upButton;
public Button downButton;
public TMP_Text floorText;
public int topFloor = 3;
public float floorHeight = 3f;
private int floor;
void Start()
{
// upButton ve downButton öğelerini asansörü bir kat hareket ettiren metotlara bağlayın
}
}
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