commandName | 要发送的命令。 |
创建可以发送到另一个窗口的事件。
// Sends a paste event to an EditorWindow, as if Paste // was selected from the Edit menu.
using UnityEngine; using UnityEditor;
public class CommandEventExample : EditorWindow { [MenuItem("Examples/CommandEvent example")] static void commandEventExample() { CommandEventExample window = EditorWindow.GetWindowWithRect<CommandEventExample>(new Rect(0, 0, 150, 40)); window.Show(); }
void OnGUI() { if (GUILayout.Button("Paste")) { Event e = EditorGUIUtility.CommandEvent("Paste"); EditorWindow ew = EditorWindow.GetWindow<Test>(true); ew.SendEvent(e); } } }
下面的脚本会接收从上述 CommandEventExample 发送的 Paste 消息。
using UnityEngine; using UnityEditor;
public class CommandEventTest : EditorWindow { private int eventCount = 0;
[MenuItem("Examples/Example that receives a paste event")] static void test() { CommandEventTest window = EditorWindow.GetWindowWithRect<CommandEventTest>(new Rect(0, 0, 100, 40)); window.Show(); }
void OnGUI() { EditorGUI.LabelField(new Rect(10, 10, 90, 30), "Paste: " + eventCount.ToString());
if (Event.current.type == EventType.ExecuteCommand) { Event e = Event.current; if (e.commandName == "Paste") { eventCount = eventCount + 1; } } } }