Unity предлагает отличные инструменты для создания небольших игр с малым количеством переменных. Когда проект разрастается, становится крайне неудобно изменять в стандартном Inspector данные, особенно если все данные хранятся в одном месте (что крайне удобно при редактировании).  Как сделать удобную для редактирования и понятную для геймдизайнеров базу данных?
Об этом ниже. Для начала создадим класс DataBase который будет отвечать за общение с базой данных или хранение данных для небольших проектов. Стоит поговорить с гемдизайнором и определится какой список типов данных потребуется. Для примера это будет 4 типа данных. Записываем их в enum (потом будет понятно зачем) Тут-же создаем интерфейс для общения с нашими типами данных. В нем обязательными полями должны быть Id, Name и одна функция DrawGui() которая в дальнейшем и будет отвечать за отрисовку нашего интерфейса.  Функция DrawGui() нам не нужна в скомпилированном проекте так что ее настоятельно рекомендую обнести директивой компиляции. В самом классе DataBase добавляем функции для доступа к данным: List GetDatas(DataType type) — для получения всего списка данных указанного типа
IData GetData(DataType type, int id) — для получения данных по id
void AddData(DataType type) — добавления нового значения
void UpdateData(DataType type, IData data) — обновление указанного значения
void Remove(DataType type, int id) — удаления указанного значения
 В этих функциях будет описано взаимодействие с базой данных например с PostgreSQL. Получилось вот так   Теперь надо создать класс для отрисовки окна в редакторе Unity. Создаем папку Editor и в ней скрипт DataBaseEditor. Наследуем его от EditorWindow. Нужно реализовать переключение между созданными ранее типами данных. Объявим статичную переменную DataType CurrentDataType и сделаем выбор типа данных в стандартной функции OnGUI() Тут есть 2 варианта: Лично я предпочитаю второй вариант так получается удобнее. Вот такого кода вполне достаточно  Можно немного поиграть и сделать выделение выбранного типа цветом. Теперь добавим одну кнопку для добавления данных в нашу базу данных  И осталось вызвать наше окно из меню Unity для этого:  В результате должно получится что-то такое   Теперь нам нужно окошко в котором будет отображаться сама форма для изменения данных. Создаем новый класс DataWindowEditor и как и ранее наследуем его от EditorWindow. В этом классе нам нужно отследить 2 события (открытие и закрытие окна). При открытии будем передавать этому окну данные для отображения и сохранять ранее открытые данные чтоб геймдизайнер случайно не потерял свою работу.  При закрытии сохранять изменения в нашу базу данных.  И осталось нарисовать саму форму в OnGUI Теперь нам надо получить список наших данных. Воспользуемся ранее созданной функцией GetDatas. И отрисовываем наши данные средствами GUILayout, при клике на элемент открыть его представление.  Вторая кнопка отвечает за удаление указанного элемента. Теперь перейдем непосредственно к нашим данным.  Создадим новый класс Item. Добавляем поля, нужные геймдизайнеру.  В моем случае пока это будет цена предмета. Наследуем класс от ранее созданного интерфейса IData. Функцию DrawGui() как и в интерфейсе стоит пометить директивой условной компиляции и в теле функции описать само отображение элемента: На этом все. Переходим в редактор и получаем вот такую картинку:  Для остальных типов данных так-же создаем отдельные классы и делаем все тоже само что и для класса Item.