Что это: Модуль Editor Windows предоставляет архитектуру для создания окон редактора Unity с разделением логики и отрисовки GUI.
Как использовать: см. разделы ниже.
Модуль Editor Windows предоставляет архитектуру для создания окон редактора Unity с разделением логики и отрисовки GUI.
Все окна редактора используют паттерн разделения ответственности:
- EditorWindow классы содержат только логику управления окном
- EditorWindowGUI классы содержат всю отрисовку GUI
Это обеспечивает:
- Чистую архитектуру с разделением ответственности
- Легкое тестирование и поддержку
- Переиспользование GUI компонентов
Абстрактный базовый класс для всех GUI отрисовщиков окон.
public abstract class EditorWindowGUI
{
public abstract void OnGUI(EditorWindow window);
}Путь меню: Tools → Neoxider → Settings
Окно для управления глобальными настройками Neoxider:
- Общие настройки (поиск атрибутов, валидация папок)
- Структура папок проекта
- Настройки иерархии сцены
GUI класс: NeoxiderSettingsWindowGUI
Путь меню: Tools → Neoxider → Scene Saver
Утилита для автоматического сохранения резервных копий сцен:
- Настраиваемый интервал сохранения
- Автоматическое сохранение в фоне
- Сохранение даже если сцена не изменена
GUI класс: SceneSaverGUI
Путь меню: Tools → Neoxider → Find & Remove Missing Scripts
Окно для поиска и удаления Missing Scripts:
- Поиск во всех сценах и префабах
- Визуальный список найденных объектов
- Массовое или индивидуальное удаление
GUI класс: FindAndRemoveMissingScriptsWindowGUI
Путь меню: Tools → Neoxider → Change Texture Max Size
Инструмент для массового изменения максимального размера текстур:
- Фильтрация по типу текстуры
- Прогресс-бар обработки
- Подтверждение перед применением
GUI класс: TextureMaxSizeChangerGUI
using UnityEditor;
using Neo.Editor.GUI;
namespace Neo.Editor.GUI
{
public class MyWindowGUI : EditorWindowGUI
{
public override void OnGUI(EditorWindow window)
{
EditorGUILayout.LabelField("My Window");
// Ваша отрисовка GUI
}
}
}using UnityEditor;
using Neo.Editor.GUI;
namespace Neo
{
public class MyWindow : EditorWindow
{
private MyWindowGUI _gui;
[MenuItem("Tools/Neoxider/My Window")]
public static void ShowWindow()
{
GetWindow<MyWindow>("My Window");
}
private void OnEnable()
{
_gui = new MyWindowGUI();
}
private void OnGUI()
{
_gui?.OnGUI(this);
}
}
}- Разделение ответственности: Логика окна отделена от отрисовки
- Тестируемость: GUI классы можно тестировать независимо
- Переиспользование: GUI компоненты можно использовать в разных окнах
- Чистота кода: EditorWindow классы содержат минимум кода
- Профессиональная структура: Соответствует лучшим практикам Unity разработки