Estructura de carpetas en Unity

Como organizar la jerarquia de carpetas de tu proyecto

Lalo Berro
3 min readDec 17, 2021

Introduccion

En unity hay muchas formas de ordenar las carpetas del proyecto, pero ¿Cual es la mejor?, no existe una que sea la mejor pero si podemos adoptar un conjunto de reglas que hagan que mantener la estructura del proyecto sea mas sencillo y escalable.

Explicacion

Cuando creamos la estructutra de carpetas comunmente se tiende a organizar de manera que cada carpeta responde a la pregunta de ¿qué guarda?, es decir, si tenemos una carpeta llamada Scripts entonces la respuesta es scripts, si tenemos una llamada Prefabs entonces guarda prefabs y asi con la mayoria de carpetas.

1. Default Structure example

Este tipo de estructura la llamo Default Folders Structure, ya que es bastante facil e intuitiva de implementar, y parece ser perfecta para un proyecto chico, para uno que recien comienza o para prototipos, pero el problema es que cada vez que el proyecto crece, las responsabilidades de cada carpeta aumentan, lo que provoca casos como este:

2. Default Structure example

en donde cada carpeta tiene dos responsabilidades, contenter archivos del MainMenu y del CharacterController, si quisieramos exportar el CharacterController para usarlo en otro proyecto deberiamos ir carpeta por carpeta revisando que le pertenece y que no. Una solucion seria que cada carpeta contenga sus propios archivos:

3. One Responsability Structure example

Si decidieramos aplicar esto a todas las carpetas tambien seria un problema ya que se generan muchas carpetas y no hay ninguna estructura o regla que las una.

Obsevando la ultima imagen (3) se pueden distinguir dos caracteristicas:

  1. MainMenu contiene todos los archivos de la escena MainMenu.
  2. CharacterController es un package (es decir que esta auto contenido y es facilmente transportable de proyecto a proyecto).

Bien empecemos a ordenar esto de una forma mas intuitiva.

Vamos crear una carpeta por escena, en este caso CharacterController al ser un package podria estar dentro de Gameplay:

4.

Esta estructura la llamo Clean Folders Structure, ya que, en vez de tener una carpeta por cada categoría que responde a la pregunta ¿qué es?, hay que hacerse la pregunta ¿para qué es? y luego ¿qué es?, esto lo que hace es que se respete el principio de responsabilidad única de SOLID y que el acoplamiento entre carpetas sea menor. Aca un ejemplo de la estructura

Como se ve cada carpeta responde al ¿para qué es? y si la expandimos responde al ¿qué es?, cada escena está separada y las cosas en común como Plugins, assets de terceros, sprites, scripts, etc se encuentran en la carpeta Common, entonces cada carpeta de escena solo depende de common y no de las demás.

Espero que el post te haya sido util! y cualquier consulta o duda no dudes en comentar o escribirme a mi mail: LaurencioBerro@gmail.com o contactarme en mi LinkedIn.

Saludos!

--

--

Lalo Berro

Im Lalo a passionate videogame programmer that loves share quality and advanced content.