Kalender
Acara panel

Acara Mouse

Acara Mouse terjadi ketika Anda berinteraksi dengan UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary
menggunakan mouse. Sentuh, pena, atau perangkat penunjuk lainnya menghasilkan acara lain, bukan acara mouse. Dalam hal Mouse API dan dalam dokumentasi ini, istilah "mouse" hanya merujuk pada mouse fisik atau mouse virtual yang meniru mouse fisik.

Acara Mouse selalu didahului oleh PointerEvent yang sesuai.

Kelas dasar untuk semua acara mouse adalah MouseEventBase.

Event Description Trickles down Bubbles up Cancellable
Login Sitemap Sent ketika pengguna menekan tombol mouse. Yes Yes Yes
MouseUpEvent Sent ketika pengguna melepaskan tombol mouse. Yes Yes Yes
MouseMoveEvent Sent ketika pengguna bergerak mouse. Yes Yes Yes
WheelEvent Sent ketika pengguna mengaktifkan roda mouse. Yes Yes Yes
Login Sitemap Sent ketika mouse memasuki jendela. Yes
Login Sitemap Sent ketika mouse meninggalkan jendela. Yes
Login Sitemap Sent ketika mouse memasuki elemen atau salah satu keturunannya. Yes Yes
Login Sitemap Sent ketika mouse meninggalkan elemen atau salah satu keturunannya. Yes Yes
Login Sitemap Sent ketika mouse memasuki elemen. Yes Yes Yes
Login Sitemap Sent ketika mouse meninggalkan elemen. Yes Yes Yes
Login Sitemap (obsolete) Sent ketika pengguna menekan dan melepaskan tombol mouse ketiga. Exists untuk keterbelakangan kompatibilitas dengan IMGUI. Yes Yes Yes

Sifat Unik

button: Properti button mengembalikan bilangan bulat yang mengidentifikasi tombol mouse ditekan untuk memicu acara. Tabel berikut daftar bilangan bulat dan tombol mouse terkait:

Integer Button
0 Tombol kiri
1 Tombol kanan
2 Tombol tengah

pressedButtons: Properti pressedButton mengembalikan 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

modifiers: Properti modifiers mengembalikan kunci pengubah ditekan selama acara keyboard. Beberapa contoh pengubah adalah tombol Shift, Ctrl, atau Alt.

Untuk informasi lebih lanjut, lihat dokumentasi MDN.Bagian kunci pengubah of the MDN documentation.

mousePosition: Properti mousePosition mengembalikan posisi mouse dalam panel, juga dikenal sebagai sistem koordinat layar. Untuk informasi lebih lanjut tentang koordinat panel, lihat Login Halaman pohon.

localMousePosition: Properti localMousePosition mengembalikan koordinat relatif terhadap elemen visual target.

mouseDelta: Perbedaan antara posisi pointer selama acara mouse sebelumnya dan posisinya selama acara mouse saat ini.

Daftar acara

Daftar berikut menyediakan nama, deskripsi, dan target setiap acara dalam keluarga acara. Untuk informasi lebih lanjut tentang acara, lihat UI Toolkit API.

Login Sitemap

Sebuah Login Sitemap dikirim ketika tombol mouse ditekan sementara kursor berada dalam elemen visual.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.

MouseUpEvent

Pemicu MouseUpEvent ketika rilis tombol mouse sementara kursor berada dalam elemen visual. MouseUpEvent gratis hingga MouseDownEvent.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.

MouseMoveEvent

MouseMoveEvent dikirim ketika hotspot kursor dipindahkan dalam elemen visual.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.

WheelEvent

WheelEvent dikirim ketika roda mouse ditekan.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.

Login Sitemap

A Login Sitemap memicu ketika kursor dipindahkan ke jendela Editor. panel Runtime tidak menerima acara ini ketika Anda memasuki jendela tampilan Game.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak, itu elemen paling dapat dipilih di bawah kursor.

Login Sitemap

Login Sitemap api ketika kursor keluar ruang jendela Editor. MouseLeaveWindowEvent adalah counterpoint untuk MouseEnterWindowEvent.

target: Elemen visual yang menerima tangkapan mouse. Jika tidak kembali kebohongan, karena kursor tidak di atas elemen.

Login Sitemap

Login Sitemap dikirim ketika kursor dipindahkan ke elemen visual, atau salah satu keturunannya.

target: Elemen visual di bawah kursor mouse, atau salah satu keturunannya.

Login Sitemap

Login Sitemap memicu ketika kursor bergerak di luar elemen visual. Acara ini berbeda dari MouseOutEvent sebagai acara ini dikirim ke setiap elemen keluar mouse. Acara ini tidak diperbanyak.

target: Elemen visual (atau salah satu keturunannya) yang keluar kursor mouse.

Login Sitemap

Login Sitemap dikirim ketika kursor memasuki elemen. Ini berbeda dari MouseEnterEvent, karena acara ini hanya dikirim ke elemen yang dimasukkan.

target: Elemen visual yang berada di bawah kursor mouse.

Login Sitemap

Pemicu Login Sitemap ketika perangkat penunjuk bergerak kursor di luar batas elemen visual.

MouseOutEvent berbeda dari MouseLeaveEvent dalam MouseOutEvent dikirim ketika meninggalkan elemen visual ke elemen lain, sementara MouseLeaveEvent tidak dikirim ketika transisi dari elemen visual ke elemen keturunan.

target: Elemen visual bahwa kursor mouse keluar.

Login Sitemap

Event dikirim oleh ContextualMenuManager ketika menu kontekstual harus diisi dengan item menu.

target: Elemen visual yang dibuat menu kontekstual.

ContextClickEvent (obsolete)

Event dikirim ketika pengguna menekan dan melepaskan tombol mouse ketiga. Acara ini hanya ada kompatibilitas ke belakang dengan IMGUI.

Examples

Contoh jendela editor

Sampel kode berikut membuat jendela Editor dengan tiga tombol yang mencetak pesan ke konsol ketika mouse bergerak ke elemen, atau tombol ditekan pada mouse.

Sampel kode ini menyoroti pemecahan acara kedua MouseDownEvent dan MouseEnterEvent, dan cara menggunakan parameter acara.

Untuk melihat contoh dalam tindakan, lakukan berikut:

  1. Buat skrip C# baru yang disebut MouseEventTestWindow
  2. Salin contoh ke dalam skrip C#.
  3. Buka contoh di bawah Window > UI Toolkit > Mouse Event Test Window.

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

// Open this in the Editor via the menu Window --> UI ToolKit --> Mouse Event Test Window
public class MouseEventTestWindow : EditorWindow

{​
    [MenuItem("Window/UI Toolkit/Mouse Event Test Window")]

    public static void ShowExample()

    {​
        MouseEventTestWindow wnd = GetWindow<MouseEventTestWindow>();
        wnd.titleContent = new GUIContent("Mouse Event Test Window");
    }

    public void CreateGUI()

    {​
        // Add a few buttons
        for (int i = 0; i < 3; i++)
        {​
            Button newElement = new Button {​ name = $"Button {​i}", text = $"Button {​i}" };
            newElement.style.flexGrow = 1;
            rootVisualElement.Add(newElement);
        }
        // Register mouse event callbacks
        rootVisualElement.RegisterCallback<MouseDownEvent>(OnMouseDown, TrickleDown.TrickleDown);
        rootVisualElement.RegisterCallback<MouseEnterEvent>(OnMouseEnter, TrickleDown.TrickleDown);
    }


    private void OnMouseDown(MouseDownEvent evt)

    {​
        bool leftMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.LeftMouse));
        bool rightMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.RightMouse));
        bool middleMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.MiddleMouse));
        Debug.Log($"Mouse Down event. Triggered by {​(MouseButton)evt.button}.");
        Debug.Log($"Pressed buttons: Left button: {​leftMouseButtonPressed} Right button: {​rightMouseButtonPressed} Middle button: {​middleMouseButtonPressed}");
    }


    private void OnMouseEnter(MouseEnterEvent evt)

    {​
        VisualElement targetElement = (VisualElement)evt.target;
        Debug.Log($"Mouse is now over element '{​targetElement.name}'");
    }

}

Contoh Runtime

Contoh kode berikut mencetak pesan ke konsol ketika tombol mouse ditekan, menunjukkan tombol mana yang memicu acara, dan tombol mana saat ini ditekan.

Contoh kode ini menyoroti register callback ke MouseDownEvent dan cara menggunakan parameter acara. Untuk melihat contoh dalam tindakan, lakukan berikut:

  1. Buat GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
    Lihat di Glossary
    dengan UID yang valid.
  2. Di bawah Assets > Scripts, buat skrip C# yang disebut MouseEventTestRuntime.
  3. Salin contoh ke dalam skrip C#.
  4. Pasang Mouse skrip EventTestRuntime ke GameObject dengan Kurs.
  5. Masukkan mode Play.
  6. Pindahkan mouse di atas tampilan permainan dan tekan atau tahan tombol pada mouse.

using UnityEngine;
using UnityEngine.UIElements;

public class MouseEventTestRuntime : MonoBehaviour
{
    void Start()
    {
        var root = GetComponent<UIDocument>().rootVisualElement;
        var newLabel = new Label("Move the mouse or press buttons to see the log output");
        newLabel.style.flexGrow = 1;
        root.Add(newLabel);
        root.RegisterCallback<MouseDownEvent>(OnMouseDown, TrickleDown.TrickleDown);
    }

    private void OnMouseDown(MouseDownEvent evt)
    {
        bool leftMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.LeftMouse));
        bool rightMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.RightMouse));
        bool middleMouseButtonPressed = 0 != (evt.pressedButtons & (1 << (int)MouseButton.MiddleMouse));

        VisualElement targetElement = (VisualElement)evt.target;
        Debug.Log($"Mouse Down event. Triggered by {(MouseButton)evt.button} over element '{targetElement.name}'");
        Debug.Log($"Pressed buttons: Left button: {leftMouseButtonPressed} Right button: {rightMouseButtonPressed} Middle button: {middleMouseButtonPressed}");
    }
}

Kalender
Acara panel