Unity "Пример иерархии объектов небольшой игры"
Многие начинающие unity разработчики задаются одним и тем же вопросом. «Как можно сделать удобную иерархию объектов игры на unity? »
Данный пример подойдет для небольших игр. Для средних и больших проектов потребуется другой подход.
Начнем с разбора иерархии объектов на сцене. В корне сцены лучше создавать пустые объекты для группировки.
«interface» содержит все связанное с интерфейсами. Холсты, панели, виджеты, камеры для отображения интерфейсов и прочее.
«GAME«содержит все объекты, которые есть на сцене. Объекты, связанные с окружением, помещаются в "Enviroment". Объекты, которые двигаются (игрок, npc, боты) помещаются в "Humanoids". Если в игре присутствуют спавны, создайте общий объект »Spawns».
«Other» содержит объекты, которые не относятся к каким то категориям. Если в other появляется много объектов, которые можно объединить, тогда создается пустой объект для группировки. И эти объекты переносятся туда
«Plugins» содержит объекты, связанные с плагинами. Такими как: реклама, метрики, монетизация и прочее.
Вот так можно создавать иерархию небольшого проекта в Unity . Главная суть данной архитектуры в том, чтобы группировать однотипные объекты, чтобы было понятно где что лежит.
Со структурой иерархии объектов на сцене разобрались. Теперь посмотрим на структуру ассетов игры.
В папке Assets создаются общие папки. Например папки: game, garbage, plugins. Папка garbage нужна для ассетов, которые вроде бы не нужны, но пока остаются на всякий случай. При скачивании каких то ассетов, они тоже автоматический попадают в папку Assets.
В папке «Game» создаются папки для: анимации, аудио, скриптов, спрайтов итд.
Далее, в этих папках может идти еще какое то подразделение. Например спрайты могут разделятся на icons, backgrounds, persons, ui. Или скрипты могут подразделятся на ui, plugins, unity editor итд.
Итог
Так как, ассеты подразумевают повторное использование, то распределять их на папки (сцена1 сцена2) плохая идея. В результате создаются дубли ассетов. Например спрайт одной и той же кнопки будет повторяться, что усложняет правки проекта и сам проект в целом.
Что касается создаваемых объектов в самой игре. Их тоже лучше помещать в один объект. Например DontDestroyOnLoad. Или создать для каждого типа создаваемого объекта свой объект для группировки.