Version: 2023.2
public bool SendEvent (Event e);

描述

将事件发送到窗口。

SendEvent 公共函数会将选中的 Event 传递给所选的可见窗口。Event 可以在 EventType 列表中找到。

In the following scripts SendEventExample looks up the ReceiveEventExample window. A Paste event is then sent over when the button is pressed.

// 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);
    }
}