Sitemap Toolkit mirip dengan UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary. Ketika peristiwa terjadi, itu dikirim sepanjang jalur perambatan di pohon elemen visual. Acara ini tidak hanya dikirim ke elemen visual target, tetapi untuk semua elemen di jalur perambatan.HTML Sitemap. When an event occurs, it’s sent along the propagation path in the visual element tree. The event isn’t only sent to the target visual element, but to all elements within the propagation path.
Urutan penanganan acara adalah sebagai berikut:
ExecuteDefaultActionAtTarget()
pada target acara.ExecuteDefaultAction()
on the event target.Sebagai acara bergerak di sepanjang jalur perambatan, pembaruan properti Event.currentTarget
ke elemen saat ini menangani acara. Dalam fungsi callback acara:
Event.currentTarget
is the visual element that the callback registers on.Event.target
is the visual element where the original event occurs.Untuk informasi lebih lanjut, lihat .
Mendaftar callback acara memungkinkan Anda menyesuaikan perilaku instance individu dari kelas yang ada, seperti bereaksi pada mouse klik pada label teks.
Secara default, eksekusi callback terdaftar selama fase target dan fase bubble-up. Perilaku default ini memastikan bahwa elemen induk bereaksi setelah elemen anaknya. Misalnya, jika Anda ingin elemen induk untuk bereaksi sebelum anaknya, mendaftarkan panggilan Anda dengan opsi TrickleDown.TrickleDown
:
// Register a callback for the trickle-down phase
myElement.RegisterCallback<MouseDownEvent>(MyCallback, TrickleDown.TrickleDown);
Ini menginformasikan pengiriman untuk mengeksekusi callback pada fase target dan fase trik.
Untuk menambahkan perilaku khusus ke elemen visual tertentu, Anda harus mendaftarkan callback acara pada elemen tersebut. Misalnya, kode berikut mendaftarkan callback untuk MouseDownEvent
:
// Register a callback on a mouse down event
myElement.RegisterCallback<MouseDownEvent>(MyCallback);
Tanda tangan panggilan Anda harus terlihat seperti ini:
void MyCallback(MouseDownEvent evt) { /* ... */ }
Anda dapat mendaftarkan beberapa callback untuk acara. Anda hanya dapat mendaftarkan fungsi callback yang sama pada acara dan fase perambatan yang sama sekali. Untuk menghapus callback dari metode VisualElement
, sebut metode myElement.UnregisterCallback()
.
Anda dapat mengirim data kustom bersama dengan callback ke acara. Untuk melampirkan data kustom, Anda harus memperpanjang panggilan untuk mendaftarkan panggilan kembali.
Kode berikut mendaftarkan callback untuk MouseDownEvent
dan mengirim data kustom ke fungsi callback:
// Send user data along to the callback
myElement.RegisterCallback<MouseDownEvent, MyType>(MyCallbackWithData, myData);
Fungsi callback harus mengembalikan tanda tangan ini:
void MyCallbackWithData(MouseDownEvent evt, MyType data) { /* ... */ }
Jika Anda menerapkan kontrol kustom, Anda dapat menanggapi acara UI Toolkit dalam dua cara:
Bagaimana Anda memilih untuk menanggapi peristiwa tergantung pada situasi.
Perbedaan antara callback dan tindakan default adalah:
Tindakan default berlaku untuk semua kasus kelas. Kelas yang mengimplementasikan tindakan default juga dapat memiliki callback yang terdaftar pada instancenya.
Ketika kelas menerapkan aksi default, itu harus derive subclass baru VisualElement
dan menerapkan metode ExecuteDefaultActionAtTarget()
, metode ExecuteDefaultAction()
, atau keduanya.
Tindakan default dieksekusi pada setiap kasus sub-kelas elemen visual ketika instance menerima acara. Untuk menyesuaikan tindakan default, Anda dapat override ExecuteDefaultActionAtTarget()
dan ExecuteDefaultAction()
, seperti yang ditunjukkan dalam contoh di bawah ini:
override void ExecuteDefaultActionAtTarget(EventBase evt)
{
// Call the base function.
base.ExecuteDefaultActionAtTarget(evt);
if (evt.GetEventTypeId() == MouseDownEvent.TypeId())
{
// ...
}
else if (evt.GetEventTypeId() == MouseUpEvent.TypeId())
{
// ...
}
// More event types
}
Menerapkan tindakan default Anda pada ExecuteDefaultAction()
memungkinkan Anda untuk menghentikan atau mencegah pelaksanaan tindakan default.
Jika Anda ingin tindakan default target untuk dieksekusi sebelum panggilan induknya, menerapkan tindakan default di ExecuteDefaultActionAtTarget()
.
Anda harus melihat tindakan default sebagai perilaku bahwa jenis elemen harus memiliki ketika menerima acara. Misalnya, kotak centang harus mengalihkan keadaannya dalam menanggapi acara klik. Untuk mengeksekusi ini, Anda dapat menimpa fungsi virtual aksi default, alih-alih mendaftarkan callback pada semua kotak centang.
Anda harus menerapkan perilaku dari elemen Anda dengan tindakan default. Anda dapat memanggil PreventDefault()
dalam panggilan yang melekat pada kasus untuk membatalkan perilaku elemen default.
Manfaat tambahan perilaku implementasi sebagai tindakan default adalah:
Untuk fleksibilitas yang lebih besar, Anda dapat mengeksekusi tindakan default dari target acara pada dua saat selama proses pengiriman acara:
ExecuteDefaultActionsAtTarget()
.ExecuteDefaultActions()
.Menerapkan tindakan default kelas Anda dalam ExecuteDefaultActions()
, jika mungkin. Ini memungkinkan lebih banyak pilihan untuk menimpa kelas. Anda dapat memanggil PreventDefault()
untuk menimpa kelas selama fase trik-down atau fase gelembung-up dari proses perambatan acara.
Anda harus menghentikan perbanyakan acara selama tindakan default jika acara tidak boleh diperbanyakkan ke elemen induk. Misalnya, bidang teks menerima KeyDownEvent
yang mengubah nilainya, seperti kunci Delete
untuk menghapus konten. Acara ini tidak boleh menyebar ke elemen visual induk. Gunakan ExecuteDefaultActionsAtTarget()
untuk menerapkan aksi default, dan sebut StopPropagation()
untuk memastikan acara tidak diproses selama fase gelembung-up.
Tindakan default hanya mengeksekusi target acara. Untuk kelas untuk bereaksi terhadap peristiwa yang menargetkan elemen anak atau induk mereka, Anda harus mendaftarkan callback untuk menerima acara baik selama tahap trik atau fase perbanyakan gelembung. Hindari mendaftarkan panggilan di kelas Anda untuk meningkatkan kinerja.
Ketika menangani acara di dalam callback atau tindakan default, Anda dapat menghentikan perbanyakan acara lebih lanjut dan pelaksanaan tindakan default. Misalnya, panel induk bisa menghentikan perbanyakan selama fase trik-down untuk mencegah anak-anaknya menerima acara.
Anda tidak dapat mencegah pelaksanaan metode EventBase.PreDispatch()
dan EventBase.PostDispatch()
di dalam kelas acara itu sendiri.
Metode berikut mempengaruhi perambatan acara dan tindakan default:
StopImmediatePropagation()
ExecuteDefaultActionAtTarget()
dan ExecuteDefaultAction()
masih dijalankan.StopPropagation()
ExecuteDefaultActionAtTarget()
dan ExecuteDefaultAction()
masih dijalankan.PreventDefaultAction()
ExecuteDefaultActionAtTarget()
dan ExecuteDefaultAction()
. PreventDefaultAction()
tidak mencegah pelaksanaan callback lain, dan tidak efektif pada ExecuteDefaultActionAtTarget()
ketika disebut selama fase gelembung-up.