Mastering Unity Project Folder Structure - Version Control Systems

Verificado com a versão: 4.3


Dificuldade: Principiante

In this tutorial I’ll shine some light on Unity Project folder structure. Which folders and files are required for version control systems?

Lets create new Unity project called “testproject”, import “Standard Assets (Mobile)” package, create new Test.cs script attached to camera and check our folder structure.

Alt Folder Structure

You’ll find that there are quite a lot of files and folders, good news that only two folders should be kept under source control: Assets and ProjectSettings. Others are generated from these two.

Here is a quick overview of all files and folders.

Assembly-CSharp-vs.csproj and Assembly-CSharp.csproj – Visual Studio (with -vs suffix) and MonoDevelop project files generated for your C# scripts.

Assembly-UnityScript-vs.unityproj and Assembly-UnityScript.unityproj – the same project files but for JavaScript scripts.

testproject.sln and testproject-csharp.sln – solution files for IDEs, first one includes all C#, JavaScript and Boo projects, while the second one – only C# projects and is designed to be opened in Visual Studio, because VS doesn’t know to handle JavaScript and Boo projects.

testproject.userprefs and testproject-csharp.userprefs – configuration files where MonoDevelop stores current opened files, breakpoints, watches etc.

NOTE All files listed above except .userprefs are re-generated each time you select Assets -> Sync MonoDevelop Project in Unity Editor menu.

TIP After syncing project MonoDevelop will open testproject.sln with all projects but if you don’t have JavaScript code you can open testproject-csharp.sln to have twice less project files and no errors related to JS. Unity Project Folder Structure.

Alt Tip

Assets – folder where all game resources are stored, including scripts, textures, sound, custom editors etc. Definitely the most important folder in your project.

ProjectSettings – in this folder Unity stores all project settings like Physics, Tags, Player settings etc. In other words everything you setup from Edit → Project Settings set of menus goes into this folder.

Alt Project Settings

Library – local cache for imported assets, when using external version control system should be completely ignored.

obj and Temp – folders for temporary files generated during build, first one used by MonoDevelop, second – by Unity.

Here is a short setup guide for Unity 4.3:

Enable External option in Unity → Preferences → Packages → Repository

Switch to Hidden Meta Files in Editor → Project Settings → Editor → Version Control Mode

Switch to Force Text in Editor → Project Settings → Editor → Asset Serialization Mode

Save scene and project from File menu

Now you are ready to use your favorite version control system. Don’t forget to add everything except Assets and ProjectSettings folders to your ignore list. Here is .gitignore we use in our project:

Unity generated

Visual Studio / MonoDevelop generated

OS generated

Vitaliy Zasadnyy

Autor da comunidade

Vitalik Zasadnyy – developer, geek, Google fan, frequent speaker on various conferences in Ukraine and abroad. Well known person among people interested in Android and other Google related stuff as he is co-founder of Google Developers Group Lviv. Got into gamedev 2 years ago and now willing to share everything he knows about game industry with others.


  1. Scripts as Behaviour Components
  2. Variables and Functions
  3. Conventions and Syntax
  4. IF Statements
  5. Loops
  6. Scope and Access Modifiers
  7. Awake and Start
  8. Update and FixedUpdate
  9. Vector Maths
  10. Enabling and Disabling Components
  11. Activating GameObjects
  12. Translate and Rotate
  13. Look At
  14. Linear Interpolation
  15. Destroy
  16. GetButton and GetKey
  17. GetAxis
  18. OnMouseDown
  19. GetComponent
  20. Delta Time
  21. Data Types
  22. Classes
  23. Instantiate
  24. Arrays
  25. Invoke
  26. Enumerations
  27. Switch Statements
  1. Properties
  2. Ternary Operator
  3. Statics
  4. Method Overloading
  5. Generics
  6. Inheritance
  7. Polymorphism
  8. Member Hiding
  9. Overriding
  10. Interfaces
  11. Extension Methods
  12. Namespaces
  13. Lists and Dictionaries
  14. Coroutines
  15. Quaternions
  16. Delegates
  17. Attributes
  18. Events
  1. Introduction to ECS
  2. Introduction to the Entity Component System and C# Job System
  3. ECS Overview
  4. Implementing Job System
  5. Implementing ECS
  6. Using the Burst Compiler
  1. Building a Custom Inspector
  2. The DrawDefaultInspector Function
  3. Adding Buttons to a Custom Inspector
  4. Unity Editor Extensions – Menu Items
  5. An Introduction to Editor Scripting
  6. Creating a Spline Tool
  7. Getting Started with IK
  1. Simple Clock
  2. MonoDevelop's Debugger
  3. Unity Editor Extensions – Menu Items
  4. Creating Meshes
  1. Mastering Unity Project Folder Structure - Version Control Systems
  1. Installation and Setup of Visual Studio
  2. Editing Your Game Code with Visual Studio
  3. Debugging Unity games in Visual Studio
  1. Scripting Primer and Q&A
  2. Scripting Primer and Q&A - Continued
  3. Scripting Primer and Q&A - Continued (Again)
  4. Persistence - Saving and Loading Data
  5. Object Pooling
  6. Introduction to Scriptable Objects
  7. How to communicate between Scripts and GameObjects
  8. Coding in Unity for the Absolute Beginner
  9. Sound Effects & Scripting
  10. Editor Scripting Intro
  11. Writing Plugins
  12. Property Drawers & Custom Inspectors
  13. Events: Creating a simple messaging system
  14. Ability System with Scriptable Objects
  15. Character Select System with Scriptable Objects
  16. Creating Basic Editor Tools
  1. Intro and Setup
  2. Data Classes
  3. Menu Screen
  4. Game UI
  5. Answer Button
  6. Displaying Questions
  7. Click To Answer
  8. Ending The Game and Q&A
  1. Intro To Part Two
  2. High Score with PlayerPrefs
  3. Serialization and Game Data
  4. Loading Game Data via JSON
  5. Loading and Saving via Editor Script
  6. Game Data Editor GUI
  7. Question and Answer
  1. Overview and Goals
  2. Localization Data
  3. Dictionary, JSON and Streaming Assets
  4. Localization Manager
  5. Startup Manager
  6. Localized Text Component
  7. Localized Text Editor Script
  8. Localization Q&A
  1. Introduction and Session Goals
  2. Particle Launcher
  3. Particle Collisions
  4. ParticleLauncher Script
  5. Particle Collisions and Scripting
  6. Random Particle Colors
  7. Drawing Decals with Particles
  8. Collecting Particle Information For Display
  9. Displaying Particles Via Script
  10. Droplet Decals
  11. Questions and Answers
  1. Introduction and Goals
  2. Project Architecture Overview
  3. Creating Rooms
  4. Creating Exits
  5. Text Input
  6. Reacting To String Input
  7. Input Actions And The Delegate Pattern
  8. Questions and Answers
  1. Introduction and Goals
  2. Project Architecture and Review
  3. Displaying Item Descriptions
  4. Examining Items
  5. Taking Items
  6. Displaying Inventory
  7. Action Responses
  8. Preparing The Use Item Dictionary
  9. Creating The Use Action
  10. Questions and Answers