Что это?
Создание собственных окон и кнопок в редакторе Unity для автоматизации рутины.
Зачем?
- Массовое переименование префабов
- Автоматическое размещение объектов по правилу
- Валидация данных на сцене
- Создание уникального инструментария под ваш проект
Пример: кнопка для спавна префабов в сцене:
[CustomEditor(typeof(LevelManager))]
public class LevelManagerEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector(); // Рисует стандартные поля
LevelManager myScript = (LevelManager)target;
if(GUILayout.Button("Spawn Enemy Wave")) // Кнопка в инспекторе
{
myScript.SpawnEnemyWave(); // Вызывает метод из скрипта
}
}
}
Пример 2: Утилита для переименования:
public class RenamerTool : EditorWindow
{
private string baseName = "Enemy_";
[MenuItem("Tools/My Renamer")] // Добавляет пункт в меню
public static void ShowWindow() => GetWindow<RenamerTool>("Renamer");
void OnGUI()
{
baseName = EditorGUILayout.TextField("Base Name", baseName);
if (GUILayout.Button("Rename Selection"))
{
foreach(GameObject obj in Selection.gameObjects)
{
obj.name = baseName + obj.GetInstanceID();
}
}
}
}
Важно!
- Весь код инструментов оборачивай в
#if UNITY_EDITOR ... #endif- Не используй в редакторе
GameObject.Find, используй Selection.gameObjects или FindObjectsOfType💡 Создавай инструменты для дизайнеров уровней и художников — они скажут спасибо!
#Unity #Editor #Tools #Productivity #Workflow
