public static void Show(Rect position, Type elementType, Func <MonoScript, ScriptableObject> onCreateScript, Func <MonoScript, bool> onFilerScript, string template) { if (_instance == null) { _instance = CreateInstance <AddScriptWindow>(); } var hasAssetToAdd = HasAssetToAdd(); EditorGUI.BeginDisabledGroup(hasAssetToAdd); if (GUI.Button(position, $"Add {ObjectNames.NicifyVariableName(elementType.Name)}", Styles.addButtonStyle)) { _instance.elementType = elementType; _instance.Init(position, onCreateScript, onFilerScript, template); _instance.Repaint(); } EditorGUI.EndDisabledGroup(); if (hasAssetToAdd) { Backup(onCreateScript); } }