Peristiwa penunjuk api untuk interaksi UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary dengan perangkat penunjuk. Mirip dengan peristiwa mouse, acara pointer memberikan informasi tambahan tentang perangkat input yang digunakan, seperti tekanan pena atau sudut kemiringan.
Acara pointer selalu mengikuti acara mouse di UI Toolkit.
Peristiwa pointer tidak memiliki posisi yang terus-menerus. Mereka juga tidak memiliki posisi set ketika mereka dibebaskan dari perangkat sentuh.
Beberapa peristiwa pointer, seperti peristiwa PointerStationaryEvent
dan PointerCancelEvent
, memiliki kondisi yang dipicu oleh sistem operasi (OS) perangkat input.
Kelas dasar untuk semua acara pointer adalah PointerEventBase.
Event | Description | Trickles down | Bubbles up | Cancellable |
---|---|---|---|---|
PointerDownEvent | Sent ketika Anda menekan pointer. | Yes | Yes | Yes |
PointerUpEvent | Sent ketika Anda melepaskan pointer. | Yes | Yes | Yes |
PointerMoveEvent | Sent ketika state perubahan pointer. | Yes | Yes | Yes |
Login Sitemap | Sent ketika pointer memasuki elemen visual, atau salah satu keturunannya. | Yes | Yes | |
PointerLeaveEvent | Sent ketika pointer meninggalkan elemen visual dan semua keturunannya. | Yes | Yes | |
PointerOverEvent | Sent ketika pointer memasuki elemen visual. | Yes | Yes | Yes |
PointerOutEvent | Sent ketika pointer meninggalkan elemen visual. | Yes | Yes | Yes |
Login Sitemap | Sent ketika tipe pointer (seperti stylus atau jari) tidak berubah untuk jumlah waktu yang ditentukan oleh sistem operasi. | Yes | Yes | Yes |
Login Sitemap | Sent ketika tindakan pointer dibatalkan oleh sistem operasi. | Yes | Yes | Yes |
altitudeAngle
: AltitudeAngle mengandung sudut gaya relatif ke permukaan, di lobak. Nilai 0 menunjukkan bahwa stylus sejajar dengan permukaan. Nilai pi/2 menunjukkan bahwa itu tegak lurus ke permukaan.
azimuthAngle
: The azimuthAngle mengandung sudut gaya relatif x-axis, di radians. Nilai 0 menunjukkan bahwa poin stylus di sepanjang sumbu x perangkat.
button
: Properti tombol mengembalikan bilangan bulat yang mengidentifikasi tombol mouse yang ditekan untuk memicu acara. Tabel berikut daftar bilangan bulat dan tombol mouse terkait:
Integer | Button |
---|---|
0 | Tombol kiri |
1 | Tombol kanan |
2 | Tombol tengah |
clickCount
: Properti klikCount mengandung jumlah kali tombol ditekan.
deltaPosition
: Properti deltaPosition
mengandung perbedaan antara posisi pointer selama acara mouse sebelumnya dan posisinya selama acara mouse saat ini.
deltaTime
: Properti deltaTime
mengandung jumlah waktu yang telah berlalu sejak perubahan tercatat terakhir pada nilai pointer, dalam hitungan detik.
localPosition
: Properti localPosition
mengembalikan posisi pointer relatif terhadap elemen visual target.
modifiers
: Properti pengubah kembali kunci pengubah saat ini berlangsung. Beberapa contoh pengubah adalah tombol Shift
, Ctrl
, atau Alt
. Untuk informasi lebih lanjut, lihat dokumentasi MDN.Bagian kunci pengubah of the MDN documentation.
pointerId
: Properti pointerId mengembalikan integer yang mengidentifikasi pointer yang mengirimkan acara.
pointerType
: Properti pointerType kembali string yang menentukan jenis pointer yang menciptakan acara.
position
: Properti posisi mengembalikan posisi pointer dalam sistem koordinasi layar atau dunia.
pressedButtons
: Properti pressedButton kembali bilangan bulat yang mengidentifikasi kombinasi tombol mouse saat ini ditekan.
Jumlah adalah jumlah nilai integer tombol individu (lihat tabel di bawah). Sebagai contoh, memegang tombol mouse kanan dan tombol mouse tengah yang ditekan pada saat yang sama akan mengakibatkan pressedButton memiliki nilai 6.
Integer | Button |
---|---|
1 | Tombol kiri |
2 | Tombol kanan |
4 | Tombol tengah |
pressure
: Sifat tekanan mengembalikan jumlah tekanan saat ini diterapkan oleh sentuhan. Jika perangkat tidak melaporkan tekanan, nilai properti ini adalah 1,0f.
radius
: Properti radius mengembalikan perkiraan jari-jari sentuhan. Tambahkan radiusVariance untuk mendapatkan radius sentuh maksimum, tarikkan untuk mendapatkan radius sentuh minimum.
radiusVariance
: Nilai properti radiusVariance menentukan akurasi radius sentuh. Tambahkan nilai ini ke radius untuk mendapatkan radius sentuh maksimum, tarikkan untuk mendapatkan radius sentuh minimum.
tangentialPressure
: Properti tangensialPressure mengembalikan nilai float mewakili tekanan yang diterapkan pada kontrol sensitif tekanan tambahan pada stylus.
twist
: Sifat twist mengembalikan rotasi stylus di sekitar sumbunya, di radians.
Daftar berikut menyediakan nama, deskripsi, dan target setiap acara dalam keluarga acara. Untuk informasi lebih lanjut tentang acara, lihat UI Toolkit API.
PointerDownEvent dikirim ketika Anda menekan pointer dalam elemen visual.
target
: Elemen visual yang menerima penangkapan pointer. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.
A PointerUpEvent memicu ketika Anda melepaskan pointer dalam elemen visual.
Ketika pemicu acara PointerUpEvent
, itu juga menghilangkan koordinat pointer. Ini juga membersihkan cache pointer, jadi tidak ada catatan lokasi pointer.
target
: Elemen visual yang menerima penangkapan pointer. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.
PointerMoveEvent terjadi ketika keadaan perubahan pointer.
target
: Elemen visual yang menerima penangkapan pointer. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.
Login Sitemap dikirim ketika pointer memasuki elemen visual, atau salah satu keturunannya.
target
: Elemen visual (atau salah satu keturunannya) yang keluar pointer.
Sebuah PointerLeaveEvent dikirim ketika pointer meninggalkan elemen visual dan semua keturunannya. Misalnya jika elemen visual mengandung anak, maka elemen induk akan menerima acara ini ketika pointer tidak lagi di atas orang tua atau anak. Elemen induk tidak akan menerima PointerLeaveEvent sementara pointer masih lebih dari satu elemen anaknya, bahkan jika tidak lagi elemen paling top di bawah pointer. Ini akan menerima PointerOverEvent bukan.
target
: Elemen visual (atau salah satu keturunannya) yang keluar pointer.
PointerOverEvent dikirim ketika pointer memasuki elemen visual.
target
: Elemen visual di bawah pointer.
PointerOutEvent dikirim ketika pointer meninggalkan elemen visual.
target
: Elemen visual yang keluar pointer.
Login Sitemap dikirim ketika tipe pointer (seperti stylus atau jari) tidak berubah untuk jumlah waktu yang ditentukan oleh sistem operasi.
target
: Elemen visual yang menangkap pointer, atau elemen yang paling dapat dipilih di bawah pointer.
Login Sitemap dikirim ketika tindakan pointer dibatalkan oleh sistem operasi.
target
: Elemen visual yang menangkap pointer, atau elemen yang paling dapat dipilih di bawah pointer.
Sampel kode berikut membuat jendela Editor dengan kotak merah yang mengandung kotak kuning. Ini mencetak pesan ke konsol ketika pointer meninggalkan elemen visual atau anaknya. Ini menunjukkan perilaku PointerOutEvent dan PointerLeaveEvent.
Untuk melihat contoh dalam tindakan, lakukan berikut:
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<ui:VisualElement style="flex-grow: 1; justify-content: center; align-items: center;">
<ui:VisualElement name="Red_Box" style="background-color: rgb(183, 34, 46); width: 50%; height: 50%; align-items: center; justify-content: center;">
<ui:VisualElement name="Yellow_Box" style="width: 175%; height: 50%; background-color: rgb(197, 163, 0);" />
</ui:VisualElement>
</ui:VisualElement>
</ui:UXML>
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
public class PointerEventsTestWindow : EditorWindow
{
[MenuItem("Window/UI Toolkit/Pointer Events Test Window")]
public static void ShowExample()
{
PointerEventsTestWindow wnd = GetWindow<PointerEventsTestWindow>();
wnd.titleContent = new GUIContent("Pointer Events Test Window");
}
public void CreateGUI()
{
// Import UXML
VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Scripts/Editor/PointerEventsTestWindow.uxml");
visualTree.CloneTree(rootVisualElement);
// Get the red box and register pointer event callbacks
VisualElement redBox = rootVisualElement.Q("Red_Box");
redBox.RegisterCallback<PointerOutEvent>(OnPointerOutEvent, TrickleDown.TrickleDown);
redBox.RegisterCallback<PointerLeaveEvent>(OnPointerLeaveEvent, TrickleDown.TrickleDown);
}
private void OnPointerLeaveEvent(PointerLeaveEvent evt)
{
Debug.Log($"Pointer LEAVE Event. Target: {(evt.target as VisualElement).name}");
}
private void OnPointerOutEvent(PointerOutEvent evt)
{
Debug.Log($"Pointer OUT Event. Target: {(evt.target as VisualElement).name}");
}
}