A guide to folder structures for Unity 6 projects

In this article, we will look at ways in which you can organize the folder structure of your Unity projects. Written for Unity 6.

George Neguceanu
December 10, 2024
7
min read
Content

Whenever you start developing a new game in Unity or working on an existing one, it's a good idea to develop a proper folder structure from the start and expand it as the project evolves. It doesn’t matter if you are alone, a small team, or a big team, it will help a lot in the long run, speed up your workflow and the development process.

Use Version Control

Even if you're working on your own, it's important to have a backup of the current and previous versions, so it's always a good idea to use a version control system such as Anchorpoint, Unity Version Control, Perforce, or Git. This will give you a safety net that will come in handy if your hardware breaks or you need to revert to a previous version.

Basic Structure

If you are working alone or with a small team, sometimes a basic folder structure is all you need, with two approaches to the structure. The most important thing is to have a clear separation between Art, Scripting, Prefabs and Scenes, along with Audio and Asset Packs/Plugins.

1) If you use a lot of plugins/asset packs that need to be updated from time to time, keep them in root, otherwise you can put them in a custom folder and every time you update them, copy the root update to your custom location and then delete the update. This may not work for very complex plugins, so do some testing first.

A Unity 6 project folder structure example
An example of a Basic Unity 6 Folder Structure

Keep the main project named with !ProjectName or !_ProjectName so it stays at the top for everyone to see.

A basic project folder structure in Unity
Folders in Green are the main files, Brown are asset packs

Do not overdo it at first, if you only have a few models and textures, put them in the Art folder, and over time create dedicated subfolders, the same with every other main folder. If you only have 5 scripts, you do not need to create subfolders in the main Scripts folder, but over time you might as the project evolves.

2) If you only have a few plugin/asset packs, or just mostly graphics that rarely or never need to be updated with the package manager. You can create a separate folder for them to keep everything organized. Most of the assets you download from the store should work in any location, but in some cases you may run into problems with those that rely heavily on scripts and root links, so do some testing first.

A basic Unity project folder structure with dedicate folder for asset packs
Folders in Green are the main files, Brown are asset packs in a dedicated folder

Advanced Structure

A typical advanced structure may look like the one below, but every project will be different, so start with a basic structure and tweak it every few weeks as needed. When you reach a dozen models, differentiate them with subfolder categories (Friendly, Enemies, Buildings, World, etc.), the same with anything that needs to be clearly identified like Behaviors, AI scripts, VFX, and so on.

An example of a advanced Unity project folder structure
An advanced folder structure on a Unity 6 Project

General Tips

  • Use a basic folder structure and build upon on that as the project expands
  • Do not organize materials and textures by domain, for example Character1 has subfolders of materials/textures/mesh etc. Keep them in one place for all, for example Materials and Textures subfolders of the main Art folder. 
  • Test the initialization of complex plugins like Gaia, Nature and so on, after you move them to a different location. If not, leave them in root.
  • Careful with Empty folders because in some instances some version control apps won't commit empty folders. If you encounter this, add an empty file in the directory and name it .keep or similar.

Tips for file naming conventions

Avoid periods and spaces, and use underscore "_" where necessary to separate and make clear what the file is for, especially if you have multiple similar models for specific locations, for example: enemy_lvl1_dungeon3.fbx , rock3_forest.fbx, trigger_respawn etc.

How do I organize source files (e.g. Blender, ZBrush, Photoshop)?

You can keep source files in a separate Git repository, or if space is an issue, use Azure DevOps as it's the best if you need large storage. For small teams, Google Drive is usually sufficient to keep the source of models, concept, characters, references for design, UI, and so on.

Asset managers such as Anchorpoint allow you to create databases for your assets by establishing naming conventions, eliminating the need to manually rename files or folders. This is a significant time saver, especially for VFX, animation, or other 3D projects. Using this method, you can efficiently develop naming conventions that simplify file identification and organization.

A folder structure on a high level made in Anchorpoint

I recommend having a backup for the asset packs of course, but don't commit them to your repos, just take what you need from there and put it in the main project folders for modification and use, otherwise your commits will be huge and hard to trim for some people unless some special filters are used, or even better, add them to .gitignore so your team members don't get confused by so many extra files.

Version control for Artists

The simplest, Git-based solution for non technical people. Works at scale and integrates into your existing Git pipeline.
Learn about Anchorpoint

FAQ

What happens when I upgrade a plugin/asset pack?

Most plugins will recreate the folder in the root if you move it to a custom location, so you have to copy and overwrite it to your custom location and then delete it, which can be annoying. So for packs that you think you'll update often, it's best to leave them in the root.

How do medium to large companies do this?

Similar to what I described in this article, but they have dedicated team members who manage the project structure and the Dev Ops aspect (version control). They also make sure that the whole team respects the structure and proper version control procedures, what to commit and where.

What is GitHub?

GitHub is a cloud service based on the Git version control system. GitHub allows you to host a Unity project online and collaborate with others. Take a look at our tutorial on how to use GitHub with Unity if you want to learn more.