Referensi acara
Perubahan peristiwa

Kalender

Tangkap peristiwa memberi tahu Anda tentang perubahan dalam keadaan tangkapan mouse. UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary
Toolkit memiliki dua jenis acara capture:

  • Kalender
  • Kalender

Ketika elemen menangkap mouse atau pointer, itu satu-satunya elemen yang menerima peristiwa dari perangkat penunjuk sampai perangkat rilis atau kehilangan tangkapan.

Misalnya, jika Anda mengklik kotak teks, kotak teks menangkap mouse. mouse masih bisa bergerak di sekitar layar, tetapi tidak akan memicu peristiwa di luar kotak teks. Selama kotak teks memiliki mouse Anda ditangkap, itu tidak akan memicu peristiwa lain. Ketika pengguna menekan tombol pada mouse di luar kotak teks, kotak melepaskan tangkapan mouse.

Event Description Trickles down Bubbles up Cancellable
Login Sitemap Sent ketika elemen mengambil tangkapan mouse.
Login Sitemap Sent ketika rilis elemen atau kehilangan tangkapan mouse.
Login Sitemap Sent ketika elemen menangkap pointer.
Login Sitemap Sent ketika elemen melepaskan pointer.

Behavior

Mouse capture

Tikus menangkap peristiwa merujuk pada peristiwa pada mouse fisik, atau mouse virtual yang meniru mouse fisik. Tutup mouse juga akan menghasilkan PointerCaptureEvent untuk pointer mouse.

Ketika elemen melepaskan tangkapan mouse, pemicu MouseCaptureOutEvent yang sesuai, dengan target menjadi elemen yang meminta pelepasan penangkapan.

Tidak ada dua elemen yang menangkap mouse pada saat yang sama. Jika elemen visual lain memicu MouseCaptureEvent, elemen yang mengirimkan MouseCaptureEvent asli kehilangan tangkapan. Ini juga memicu MouseCaptureOutEvent pada elemen asli.

Pointer capture

Acara pointer pracede acara mouse di UI Toolkit. Jika jenis pointer adalah mouse, menangkapnya juga akan memicu peristiwa tangkapan mouse yang sesuai. Capturing pointer juga akan menangkap mouse.

Daftar acara

Login Sitemap

Acara MouseCaptureEvent dikirim ketika elemen mengambil tangkapan mouse.

target: Elemen yang mengambil tangkapan.

Login Sitemap

Acara MouseCaptureOutEvent dikirim ketika rilis elemen, atau kehilangan tangkapan mouse.

target: Elemen yang kehilangan tangkapan.

Login Sitemap

Acara PointerCaptureEvent dikirim ketika elemen mengambil penangkapan pointer.

target: Elemen yang mengambil tangkapan.

Login Sitemap

Acara PointerCaptureOutEvent dikirim ketika rilis elemen, atau kehilangan penangkapan pointer.

target: Elemen yang kehilangan tangkapan.

Examples

Contoh berikut menunjukkan perilaku acara capture, dan menangkap dan melepaskan pointer.

Untuk melihat contoh dalam tindakan, lakukan berikut:

  1. Di bawah Assets > Scripts > Editor, buat file C# baru yang disebut CaptureEventsTestWindow.cs
  2. Salin contoh ke dalam skrip C#.
  3. Dari Editor Toolbar, pilih Window > UI Toolkit > Capture Events Test Window.
  4. Klik pada berbagai label di jendela dialog, dan menonton konsol untuk output.
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public class CaptureEventsTestWindow : EditorWindow
{
    [MenuItem("Window/UI Toolkit/Capture Events Test Window")]
    public static void ShowExample()
    {
        var wnd = GetWindow<CaptureEventsTestWindow>();
        wnd.titleContent = new GUIContent("Capture Events Test Window");
    }

    private bool m_IsCapturing = false;

    public void CreateGUI()
    {
        // Add a few clickable labels that print a message to the console when clicked
        for (int i = 0; i < 4; i++)
        {
            Label clickableLabel = new Label($"Label {i} - Click Me!");
            clickableLabel.RegisterCallback<MouseDownEvent>((evt) => { Debug.Log($"Clicked on label '{(evt.target as Label).text}'"); });
            rootVisualElement.Add(clickableLabel);
        }

        // Now add a label that captures the pointer
        Label capturingLabel = new Label("Click here to capture mouse");
        capturingLabel.RegisterCallback<MouseDownEvent>((evt) =>
        {
            if (!m_IsCapturing)
            {
                capturingLabel.text = "Click here to release mouse";
                MouseCaptureController.CaptureMouse(capturingLabel);
                m_IsCapturing = true;
            }
            else
            {
                capturingLabel.text = "Click here to capture mouse";
                MouseCaptureController.ReleaseMouse(capturingLabel);
                m_IsCapturing = false;
            }
        });
        rootVisualElement.Add(capturingLabel);

        // Register callbacks to print a message when the mouse is captured or released
        rootVisualElement.RegisterCallback<MouseCaptureEvent>((evt) =>
        {
            Debug.Log("Mouse captured");
        });
        rootVisualElement.RegisterCallback<MouseCaptureOutEvent>((evt) =>
        {
            Debug.Log("Mouse captured released");
        });
    }
}
Referensi acara
Perubahan peristiwa