Найти тему
Ilay Ulanin

Пример иеархии проекта небольшой игры на Unity

Многие начинающие unity разработчики задаются одним и тем же вопросом. «Как можно сделать удобную архитектуру игры на unity? »

Данный пример подойдет для небольших игр. Для средних и больших проектов потребуется другая архитектура. В статье будет описана архитектура проекта с точки зрения ассетов и игровых объектов, а не с точки зрения кода.

Начнем с разбора иерархии объектов на сцене. В корне сцены лучше создавать пустые объекты для группировки.

«interface» содержит все связанное с интерфейсами. Холсты, панели, виджеты, камеры для отображения интерфейсов и прочее.

-2

«GAME«содержит все объекты, которые есть на сцене. Объекты, связанные с окружением, помещаются в "Enviroment". Объекты, которые двигаются (игрок, npc, боты) помещаются в "Humanoids". Если в игре присутствуют спавны, создайте общий объект »Spawns».

-3

«Other» содержит объекты, которые не относятся к каким то категориям. Если в other появляется много объектов, которые можно объединить, тогда создается пустой объект для группировки. И эти объекты переносятся туда.

-4

«Plugins» содержит объекты, связанные с плагинами. Такими как: реклама, метрики, монетизация и прочее.

-5

Вот так можно создавать иерархию проекта в Unity для небольших проектов. Главная суть данной архитектуры в том, чтобы группировать однотипные объекты, чтобы было понятно где что лежит.

*********************************************************************************

Со структурой иерархии объектов на сцене разобрались. Теперь посмотрим на структуру ассетов игры.

В папке Assets создаются общие папки. Например папки: game, garbage, plugins. Папка garbage нужна для ассетов, которые вроде бы не нужны, но пока остаются на всякий случай. При скачивании каких то ассетов, они тоже автоматический попадают в папку Assets.

-6

В папке «Game» создаются папки для: анимации, аудио, скриптов, спрайтов итд.

-7

Далее, в этих папках может идти еще какое то подразделение. Например спрайты могут разделятся на icons, backgrounds, persons, ui. Или скрипты могут подразделятся на ui, plugins, unity editor итд.

-8

Итог

Так как, ассеты подразумевают повторное использование, то распределять их на папки (сцена1 сцена2) плохая идея. В результате создаются дубли ассетов. Например спрайт одной и той же кнопки будет повторяться, что усложняет правки проекта и сам проект в целом.

Что касается создаваемых объектов в самой игре. Их тоже лучше помещать в один объект. Например DontDestroyOnLoad. Или создать для каждого типа создаваемого объекта свой объект для группировки.