Acara Mouse
Kalender

Acara panel

Panel merupakan contoh yang terlihat dari hierarki UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary
. Ini menangani acara perilaku elemen yang dikirim dalam hirarki pohon visual. Ini memegang referensi ke elemen visual akar hierarki. Untuk UI runtime, itu sebanding dengan Canvas di UGUI.

Anda harus melampirkan contoh elemen visual ke panel untuk render atau menerima acara.

Peristiwa panel api pada elemen visual ketika hubungannya dengan perubahan panel. Misalnya, ketika Anda menambahkan elemen visual ke panel (AttachToPanelEvent) atau menghapusnya dari panel (DetachFromPanelEvent).

Peristiwa panel hanya dikirim ke elemen visual dan keturunan mereka dalam hirarki yang langsung dipengaruhi ketika perubahan panel terjadi. Elemen induk tidak menerima peristiwa ketika elemen visual keturunan melampirkan atau mendetach dari panel.

Misalnya, dalam kode UXML di bawah ini, ketika Anda menambahkan elemen visual parent ke hierarki yang sudah melekat pada panel, parent, child, dan grandchild semua menerima acara yang sama. Jika Anda menghapus parent dari hierarki UXML yang sama, semua elemen visual akan menerima peristiwa DetachFromPanel.


<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
   <ui:VisualElement name="parent">
       <ui:VisualElement name="child">
           <ui:VisualElement name="grandchild" />
       </ui:VisualElement>
   </ui:VisualElement>
</ui:UXML>

Kelas dasar untuk semua peristiwa panel adalah PanelChangedEventBase.

Event Description Trickles down Bubbles up Cancellable
Login Sitemap Sent benar setelah elemen (atau salah satu orang tuanya) melekat pada panel.
Login Sitemap Sent hanya sebelum elemen (atau salah satu orang tuanya) didetakdirkan dari panel.

Sifat unik

originPanel: originPanel mengandung data spesifik untuk DetachFromPanelEvent. Ini mengandung panel sumber yang detaches elemen visual selama perubahan panel.

destinationPanel: destinationPanel mengandung data spesifik untuk AttachFromPanelEvent. Ini menyediakan panel di mana elemen visual sekarang terpasang.

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

Perapian AttachToPanelEvent setelah elemen visual melampirkan ke panel. Hal ini juga terjadi ketika Anda menambahkan elemen visual ke hierarki yang melekat pada panel.

target: Elemen visual yang melekat pada panel.

Login Sitemap

Pemicu DetachFromPanelEvent sebelum Anda menghapus elemen visual dari panel. Hal ini juga terjadi ketika Anda menghapus elemen visual dari hirarki yang melekat pada panel.

target: Elemen visual yang terlepas dari panel.

Examples

Contoh berikut membuat jendela Editor dengan tombol yang akan menambahkan label tambahan ke jendela. Mengklik label akan menghapusnya lagi.

Contoh ini mengimplementasikan kelas label kustom yang mencetak pesan ke konsol setiap kali instance dari VisualElement dilampirkan atau dipisahkan dari panel. Ini menyoroti perilaku LampiranToPanelEvent dan DetachFromPanelEvent acara dan bagaimana menggunakan properti Panel Asal dan panel tujuan.

Untuk melihat contoh dalam tindakan, lakukan berikut:

  1. Di bawah Assets > Scripts > Editor, buat skrip C# yang disebut PanelEventsTestWindow.
  2. Salin kode contoh ke dalam skrip C#.
  3. Dari Editor Toolbar, pilih Window > UI Toolkit > Panel Events Test Window.

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

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

    public void CreateGUI()
    {
        // Set a name for the panel
        rootVisualElement.panel.visualTree.name = "Our Window Root Visual Element";

        // Add a button which will add new instances of our custom labels to the window
        rootVisualElement.Add(new Button(() => rootVisualElement.Add(new CustomLabel())) { text = "Add New Label" });
    }
}

/// <summary>
/// Custom label class which prints out a console message when it is attached or detached.
/// </summary>
public class CustomLabel : Label
{
    private static int m_InstanceCounter = 0;
    private int m_LabelNumber;

    public CustomLabel() : base()
    {
        m_LabelNumber = ++m_InstanceCounter;
        text = $"Label #{m_LabelNumber} - click me to detach";
        RegisterCallback<AttachToPanelEvent>(evt =>
        {
            Debug.Log($"I am label {m_LabelNumber} and I " +
                $"just got attached to panel '{evt.destinationPanel.visualTree.name}'");
        });
        RegisterCallback<DetachFromPanelEvent>(evt =>
        {
            Debug.Log($"I am label {m_LabelNumber} and I " +
                $"just got detached from panel '{evt.originPanel.visualTree.name}'");
        });
        // Register a pointer down callback that removes this element from the hierarchy
        RegisterCallback<PointerDownEvent>(evt => this.RemoveFromHierarchy());
    }
}


Acara Mouse
Kalender