版本: Unity 6 (6000.0)
语言英语
  • C#

EditorWindow.SendEvent

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们会阅读用户提出的每个更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public bool SendEvent(Event e);

描述

将事件发送到窗口。

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

在以下脚本中,SendEventExample 会查找 ReceiveEventExample 窗口。当按钮被按下时,会发送一个 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);
    }
}