`ContextualMenuPopulateEvent` в UI Toolkit - это событие, которое возникает, когда необходимо заполнить контекстное меню (также известное как всплывающее меню). Это меню обычно отображается при щелчке правой кнопкой мыши на элементе пользовательского интерфейса.
Это событие позволяет разработчикам динамически добавлять элементы в контекстное меню в зависимости от текущего контекста или состояния приложения.
Пример использования `ContextualMenuPopulateEvent` в Unity:
```csharp
using UnityEngine;
using UnityEngine.UIElements;
public class ContextMenuExample : MonoBehaviour
{
private void OnEnable()
{
// Получаем корневой визуальный элемент
var root = GetComponent<UIDocument>().rootVisualElement;
// Находим элемент, к которому хотим добавить контекстное меню
var targetElement = root.Q<VisualElement>("target-element");
// Подписываемся на событие ContextualMenuPopulateEvent
targetElement.RegisterCallback<ContextualMenuPopulateEvent>(OnContextualMenuPopulate);
}
private void OnContextualMenuPopulate(ContextualMenuPopulateEvent evt)
{
// Добавляем пункты в контекстное меню
evt.menu.AppendAction("Action 1", (a) => Debug.Log("Action 1 selected"));
evt.menu.AppendAction("Action 2", (a) => Debug.Log("Action 2 selected"));
evt.menu.AppendAction("Action 3", (a) => Debug.Log("Action 3 selected"));
}
}
```
В этом примере:
1. Мы получаем корневой визуальный элемент с помощью `GetComponent<UIDocument>().rootVisualElement`.
2. Находим целевой элемент, к которому хотим добавить контекстное меню.
3. Регистрируемся на событие `ContextualMenuPopulateEvent` для этого элемента.
4. В обработчике события `OnContextualMenuPopulate` добавляем пункты в контекстное меню с помощью метода `AppendAction`.
Это позволяет создавать динамические и контекстно-зависимые контекстные меню в вашем приложении.