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