В игровом движке Unity есть функции которыми многие игровые разработчики пренебрегают считают их не правильными и не оптимизированными. В этом есть правда так например есть функция GameObject.FindGameObjectsWithTag() ,которая проходит по всей сцене и ищет объекты с нужным тэгом. Данная функция очень сильно влияет на производительность и в самой игре лучше ее не использовать. Но вот для своих инструментов ,которые можно создать для облегчения разработки игр, функцию можно использовать. Например при процессе расстановки checkpoints, enemy, NPC. После процесса расстановки можно запустить скрипт в котором все объекты объединяются в 1 структуру или же сохранятся в каком то формате ,например XML.
То есть даже вроде вредные функции для разработки игры подходят для инструментов.
Основные идеи которые стоит соблюдать при разработке инструментов. Это все части должны находиться в папке editor, данная папка не собирается при собирание проекта. Это нужно чтоб инструменты не попали в игру, если они не нужны. Если они будут нужны например хочется дать игроку редактор карт, то можно собрать чисто инструменты.
Что можно делать с помощью UnityEditor. UnityEditor -это библиотека для работы с редактором в движке. Можно создавать дополнительные возможности в самом редакторе, например один из популярных плагинов созданных с помощью UnityEditor это TileMap
В данном плагине можно легко создавать 2д уровни, очень легким способом как рисование в фотошопе. Так же очень легко добавлять физику на нарисованные объекты, и добавлять скрипты.