Kalender
WordPress.org

Acara Tooltip

Acara Tooltip dikirim untuk memeriksa apakah elemen visual di bawah pointer dapat menampilkan tooltip. Ini adalah acara Editor-only.

Tooltips biasanya diatur menggunakan properti tooltip. Anda juga dapat menanggapi acara Tooltip untuk mengatur tooltips.

Anda dapat menangani acara Tooltip dalam dua cara:

  1. Mengatur panggilan ke TooltipEvent. Ini menambahkan tooltip ke elemen visual yang tidak memiliki satu set. Ini juga dapat menimpa set tooltip ke elemen visual.
  2. Tentukan VisualElement kustom (seperti menentukan kelas yang memperpanjang VisualElement), dan menimpa metode ExecuteDefaultAction.

Jika Anda mengatur callback atau menerapkan elemen visual khusus untuk mendeklarasikan tooltips, jangan menetapkan nilai untuk properti tooltip melalui kode atau UXML.

Ketika Anda mengatur properti tooltip, elemen visual di bawah kursor mouse secara otomatis mendaftarkan callback untuk menangani TooltipEvent. Callback ini juga menghentikan perbanyakan lebih lanjut dari acara.

Jika Anda mendaftarkan panggilan kustom untuk menangani TooltipEvent, Anda harus menghentikan perbanyakan acara, atau ujung alat dapat ditimidasi nanti dalam fase perambatan.

Kelas dasar untuk acara Tooltip adalah kelas EventBase.

Event Description Trickles down Bubbles up Cancellable
Login Sitemap Sent hanya sebelum Unity menampilkan tooltip. Yes Yes Yes

Sifat unik

rect: Persegi panjang elemen visual yang terlambat dalam sistem koordinat panel.

tooltip: Properti tooltip adalah string teks untuk ditampilkan di dalam kotak tooltip selama acara tooltip. Acara callback berikut menetapkan properti tooltip selama acara:

   evt.tooltip = "Tooltip set by parent!";

Daftar acara

Login Sitemap

TooltipEvent dikirim hanya sebelum Editor Unity menampilkan tooltip. Pegang harus mengatur string TooltipEvent.tooltip dan TooltipEvent.rect.

target: Elemen visual di bawah mouse.

Examples

Contoh berikut menampilkan perilaku ToolTipEvent.

Untuk melihat contoh:

  1. Di bawah Assets > Scripts > Editor, buat skrip C# yang disebut SampleWindow.
  2. Salin salah satu contoh berikut ke dalam skrip C#.
  3. Dari Editor Toolbar, pilih Window > UI Toolkit > SampleWindow.

Contoh 1: Mendaftar panggilan ke TooltipEvent pada elemen visual induk

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

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

   public void CreateGUI()
   {
       VisualElement label = new Label("Hello World! This is a UI Toolkit Label.");
       rootVisualElement.Add(label);

       label.tooltip = "And this is a tooltip";

       // If you comment out the registration of the callback, the tooltip that displays for the label is "And this is a tooltip".
       // If you keep the registration of the callback, the tooltip that displays for the label (and any other child of rootVisualElement)
       // is "Tooltip set by parent!".
       rootVisualElement.RegisterCallback<TooltipEvent>(evt =>
       {
           evt.tooltip = "Tooltip set by parent!";
           evt.rect = (evt.target as VisualElement).worldBound;
           evt.StopPropagation();
       }, TrickleDown.TrickleDown); // Pass the TrickleDown.TrickleDown parameter to intercept the event before it reaches the label.
   }
}

Contoh 2: Menurunkan elemen visual khusus dan overriding ExecuteDefaultAction

using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

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

   private void CreateGUI()
   {
       CustomLabel custom1 = new CustomLabel("custom 1");
       rootVisualElement.Add(custom1);

       CustomLabel custom2 = new CustomLabel("custom 2");
       rootVisualElement.Add(custom2);
   }
}

public class CustomLabel : Label
{
   private static int m_InstanceCounter = 0;

   private int m_CurrentCounter;

   public CustomLabel(string labelText) : base(labelText)
   {
       m_CurrentCounter = m_InstanceCounter++;
   }

   protected override void ExecuteDefaultAction(EventBase evt)
   {
       // Other events need to be handled as usual.
       base.ExecuteDefaultAction(evt);

       if (evt.eventTypeId == TooltipEvent.TypeId())
       {
           TooltipEvent e = (TooltipEvent)evt;

           // Apply an offset to the tooltip position.
           var tooltipRect = new Rect(worldBound);
           tooltipRect.x += 10;
           tooltipRect.y += 10;
           e.rect = tooltipRect;

           // Set a custom/dynamic tooltip. 
           e.tooltip = $"This is instance # {m_CurrentCounter + 1} of my CustomLabel";

           // Stop propagation avoids other instances of handling of the event that may override the values set here.
           e.StopPropagation();
       }
   }
}

Kalender
WordPress.org