Düğmeler ve onClick
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 6 / 60.
GameObject > UI > Button - TextMeshPro bir düğme ekler: tıklanacak bir Image, bir Button bileşeni ve etiketi için bir Text (TMP) alt nesnesi. Button'ın onClick özelliği bir olaydır; üzerine tıklama 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 olmadan yöntemin kendisini iletir. AddListener(Ring()) ise Ring'i hemen çağırır ve döndürdüğü değeri iletir; döndürülen bir şey olmadığından 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 çalmasına neden olur. Tıklama yalnızca düğmenin üzerinde gerçekleştiğinde sayılır; oysa Input.GetMouseButtonDown(0), herhangi bir yere tıklandığında true olur.
Bir düğmenin interactable özelliği, kullanılıp kullanılamayacağını belirler. bellButton.interactable = false; düğmeyi Disabled Color rengine boyar ve true olarak ayarlanana kadar dinleyicileri çağrılmaz; böylece oyuncu hangi düğmelerin şu anda çalıştığını görür. Telefonda aynı düğmelere dokunulur.
Görev
KolayAsansörün Yukarı ve Aşağı düğmelerini çalışır hâle getir.
Start()içinde,onClick.AddListenerileupButton'ıGoUp'a (floor++) vedownButton'ıGoDown'a (floor--) bağla.Start()içinde ve her hareketten sonra çağrılanShowFloor()metodunu yaz: asansörün y değerifloor * floorHeightolsun vefloorTextiçindeFloor: 2yazsın.- Yukarı düğmesi
topFloordeğerinin altındayken, Aşağı düğmesi 0'ın üzerindeyken etkileşimli olsun.
“Oyna” düğmesine bas: en üst katta Yukarı düğmesi griye döner. Ardından “Kontrol et” düğmesine 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ğ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östergesi2Düğ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 ParalarKendi başına pratik yap: Unity playground