Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Lift menara memiliki tombol Up dan Down. Tulis Lift.cs (scene menghubungkan upButton, downButton, dan floorText):

  • Di Start(), hubungkan upButton ke method yang menaikkan lift satu lantai, dan downButton ke method yang menurunkannya satu lantai.
  • Lantai dimulai dari 0 hingga topFloor (3). Lift berada pada y = lantai x floorHeight (3), jadi di lantai 2, nilai y-nya 6. Nilai x dan z tetap seperti semula.
  • floorText menampilkan lantai, seperti Floor: 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
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Membangun Game Sungguhan