using UnityEditor; using UnityEngine; namespace Amanotes { internal class EditorInputDialog : EditorWindow { private string message; private string inputText; private bool firstFrame = true; private static string result; internal static string Show(string title, string message, string defaultValue = "") { result = null; var w = CreateInstance(); w.titleContent = new GUIContent(title); w.message = message; w.inputText = defaultValue ?? ""; w.minSize = new Vector2(400, 130); w.maxSize = new Vector2(600, 130); w.ShowModal(); return result; } void OnGUI() { GUILayout.Space(8); EditorGUILayout.LabelField(message, EditorStyles.wordWrappedLabel); GUILayout.Space(4); GUI.SetNextControlName("InputField"); inputText = EditorGUILayout.TextField(inputText); if (firstFrame) { EditorGUI.FocusTextInControl("InputField"); firstFrame = false; } if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return && !string.IsNullOrEmpty(inputText)) { result = inputText; Close(); return; } GUILayout.Space(8); EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Cancel", GUILayout.Width(80))) Close(); if (GUILayout.Button("OK", GUILayout.Width(80))) { if (!string.IsNullOrEmpty(inputText)) result = inputText; Close(); } EditorGUILayout.EndHorizontal(); } } }