Sebuah ClickEvent terjadi ketika pengguna mengklik tombol kiri mouse (atau tombol pertama pada perangkat pointing) atas VisualElement.
Sebuah klik terdiri dari acara pointer down diikuti oleh acara pointer di VisualElement yang sama. Penunjuk diperbolehkan untuk bergerak antara dua peristiwa, selama peristiwa turun dan up terjadi di VisualElement yang sama.
Acara ini dapat digunakan untuk mendeteksi klik pada elemen visual yang tidak tombol. Misalnya, implementasi kontrol Toggle
menggunakan ClickEvent
untuk menunjukkan atau menyembunyikan tanda cek, dan untuk mengubah nilai kontrol.
Kelas dasar untuk ClickEvent
adalah PointerEventBase. Untuk informasi lebih lanjut silakan lihat dokumentasi tentang Acara Pointer.
Event | Description | Trickles down | Bubbles up | Cancellable |
---|---|---|---|---|
ClickEvent | Occurs ketika tombol kiri mouse diklik. | ✔ | ✔ | ✔ |
ClickEvent
tidak memiliki sifat unik, tetapi mengherankan semua sifat dari kelas dasarnya. Anda dapat menemukan daftar properti di halaman Acara Pointer.
Unity mengirimkan acara ini ketika tombol kiri mouse diklik atas elemen visual.
target
: Elemen di bawah perangkat mouse atau titik saat klik terjadi.
Gunakan kode berikut untuk mendaftarkan ClickEvent
pada elemen visual:
visualElement.RegisterCallback<ClickEvent>(OnClickEvent);
Contoh berikut menunjukkan cara bereaksi terhadap KlikEvent pada elemen visual berwarna. Ketika elemen diklik, warnanya akan berubah menjadi warna baru, acak.
Untuk melihat contoh dalam tindakan, lakukan berikut:
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
public class ClickEventExampleWindow : EditorWindow
{
[MenuItem("Window/UI Toolkit/ClickEventExample")]
public static void ShowExample()
{
var wnd = GetWindow<ClickEventExampleWindow>();
wnd.titleContent = new GUIContent("Click Event Example");
}
public void CreateGUI()
{
// Create a few different colored boxes
for (int i = 0; i < 4; i++)
{
// Create VisualElement with random background color
var newBox = new VisualElement() { style = { flexGrow = 1, backgroundColor = GetRandomColor() } };
rootVisualElement.Add(newBox);
// Register a click event to the visual element to change the background color to a new color
newBox.RegisterCallback<ClickEvent>(OnBoxClicked);
}
}
private void OnBoxClicked(ClickEvent evt)
{
// Only perform this action at the target, not in a parent
if (evt.propagationPhase != PropagationPhase.AtTarget)
return;
// Assign a random new color
var targetBox = evt.target as VisualElement;
targetBox.style.backgroundColor = GetRandomColor();
}
private Color GetRandomColor()
{
return new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
}
}