Unity 6.3
0 онлайн 72 гостей 3 в системе
Вход

EditorWindow.SendEvent

Declaration

public bool SendEvent(Event e);

Описание

Отправляет Событие в окно.

SendEvent public function passes a selected Event к выбранному видимому окну. Event можно найти в EventType лист.

В следующих скриптах SendEventExample смотрит на ReceiveEventExample окно A Paste событие отправляется при нажатии кнопки.

// Send an event to another editor window. The second
// window needs to be visible to receive the event.

using UnityEngine;
using UnityEditor;
using UnityEngine.UIElements;

public class SendEventExample : EditorWindow
{
    [MenuItem("Examples/Send Event")]
    static void Init()
    {
        SendEventExample window =
            EditorWindow.GetWindow<SendEventExample>(true, "Send Event Window");
        window.Show();
    }

    void CreateGUI()
    {
        var buttonSendEvent = new Button();
        buttonSendEvent.text = "Send Event";
        buttonSendEvent.clicked += () =>
        {
            EditorWindow win = GetWindow<ReceiveEventExample>();
            if (win)
                using (var commandEvent = ExecuteCommandEvent.GetPooled(EditorGUIUtility.CommandEvent("Paste")))
                {
                    win.rootVisualElement.SendEvent(commandEvent);
                }
        };
        rootVisualElement.Add(buttonSendEvent);
    }
}
// An Editor window that receives sent events.

using UnityEngine;
using UnityEditor;
using UnityEngine.UIElements;

public class ReceiveEventExample : EditorWindow
{
    [MenuItem("Examples/Receive Events")]
    static void Init()
    {
        ReceiveEventExample window =
            EditorWindow.GetWindow<ReceiveEventExample>(true, "Receive Events Window");
        window.Show();
    }

    void CreateGUI()
    {
        var button = new Button();
        button.text = "Button";
        rootVisualElement.Add(button);

        rootVisualElement.RegisterCallback<ExecuteCommandEvent>(evt =>
        {
            if (evt.commandName == "Paste")
                button.text = "Paste received";
        }, TrickleDown.TrickleDown);
    }
}