Tombol dan onClick
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 6 dari 56.
GameObject > UI > Button - TextMeshPro menambahkan sebuah tombol: Image yang bisa diklik, komponen Button, dan child Text (TMP) untuk labelnya. onClick milik Button adalah event, yaitu daftar method yang dipanggilnya saat klik dilepas di atasnya. Sebuah script menambahkan method-nya sendiri ke daftar itu dengan AddListener, satu kali, di Start(). Button berada di namespace UnityEngine.UI:
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) meneruskan method itu sendiri, tanpa tanda kurung. AddListener(Ring()) akan langsung memanggil Ring dan meneruskan nilai yang dikembalikannya, yang tidak ada, sehingga tidak bisa dikompilasi: Argument 1: cannot convert from 'void' to 'UnityEngine.Events.UnityAction'. Listener tidak menerima parameter dan mengembalikan void. Jika ditambahkan di Update(), method yang sama akan masuk ke daftar lagi setiap frame, dan satu klik akan membunyikan bel ratusan kali. Klik hanya dihitung jika dilakukan pada tombol itu sendiri, sedangkan Input.GetMouseButtonDown(0) bernilai true untuk klik di mana saja.
interactable milik tombol menentukan apakah tombol itu bisa digunakan. bellButton.interactable = false; memberi tombol warna Disabled Color, dan listener-nya tidak dipanggil sampai nilainya diatur kembali menjadi true, sehingga pemain bisa melihat tombol mana yang berfungsi saat ini. Di ponsel, tombol yang sama diketuk.
Tantangan
MudahLift menara memiliki tombol Up dan Down. Tulis Lift.cs (scene menghubungkan upButton, downButton, dan floorText):
- Di
Start(), hubungkanupButtonke method yang menaikkan lift satu lantai, dandownButtonke method yang menurunkannya satu lantai. - Lantai dimulai dari 0 hingga
topFloor(3). Lift berada pada y = lantai xfloorHeight(3), jadi di lantai 2, nilai y-nya 6. Nilai x dan z tetap seperti semula. floorTextmenampilkan lantai, sepertiFloor: 2, sejak awal.- Di lantai teratas, tombol Up tidak dapat digunakan, dan di lantai 0, tombol Down tidak dapat digunakan.
Tekan Play, naiklah ke lantai teratas dan kembali, lalu tekan Check.
Coba sendiri
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()
{
// Hubungkan upButton dan downButton ke method yang menggerakkan lift satu lantai
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank