将事件发送到窗口。
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); } }