Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web, and connect with loyal and enthusiastic players and customers. Download: Offline Unity Documentation (Size: about 300MB) The zip file contains the most up-to-date version of the Unity Manual and Unity Scripting API. Unity Manual Unity Scripting API (Scripting Reference) Switching between Unity versions in the documentation. New in Unity 2020 LTS. Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Submission failed. For some reason your suggested change could not be submitted. Please try again in a few minutes. Unity Documentation.
Ours multicore processors and the CPU cache.
Scripting is an essential ingredient in all applications you make in Unity. Most applications need scripts A piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info See in Glossary to respond to input from the player and to arrange for events in the gameplay to happen when.
Data-oriented design also means it’s easier to reuse code and easier for others to understand and contribute to it.
Read the ECS documentation for information on how to create gameplay using ECS y. Watch the Options for Entity interaction talk from Unite Copenhagen 2019 to get tips on choosing your code strategy. We also recommend getting these Entity Component System samples from GitHub.
The Entities package also includes Unity Live Link. With Unity Live Link, you can make changes in the Editor and see the changes reflected on any connected devices running the standalone player. This enables you to get direct feedback on the actual device performance.
Also included, the new Conversion Workflow converts your GameObjects to entities with one click so you can work with DOTS using GameObjects as you know them today.
Learn moreC# Job System
The C# Job System takes advantage of the multiple cores in today’s computers. It’s designed to empower C# programmers to write safe, fast and parallelized code.
Take advantage of multiple cores
The C# Job System exposes Unity’s internal C++ Job System, allowing C# scripts to run as jobs alongside Unity internal components.
A safe environment
Provides protection from some of the pitfalls of multithreading such as race conditions.
Learn moreBurst Compiler
A new LLVM-based backend compiler technology takes C# jobs and produces highly optimized machine code.
The best of every platform
The Burst Compiler optimizes your output for the platform you’re compiling for.
Less hand-coding
Get many of the advantages of hand-tuned assembler code, across multiple platforms, without all the hard work.
Watch our Unite Copenhagen talk to get started and download the companion code from GitHub.
Learn moreUnity Physics (preview)
We developed a brand-new Physics engine built on DOTS technology, enabling you to create physics simulations that deliver exceptional performance compatible with modern networking needs. Unity Physics is currently in Preview, and compatible with Unity 2019.1 and later versions.
For customers who need to produce very complex physics simulations, we offer Havok Physics for Unity. It’s backed by the industry-leading Havok Physics engine, which powers over half the top titles of this console generation. It’s written using the same C# DOTS framework as Unity Physics, but includes the features, performance, stability, and functionality of the closed-source, proprietary Havok Physics engine, written in native C++.
Learn moreUnity NetCode (preview)
If you’re thinking about making a multiplayer game in Unity, our DOTS Sample project is a good place to see our progress in this area so far. The NetCode that’s included provides client-side prediction, authoritative server and interpolation, making it easy to create a networked FPS game.
Find out more about the future of Unity networking from this Unite Copenhagen 2019 talk.
Learn moreDSPGraph (experimental)
The foundation of the upcoming DOTS audio system is the DSPGraph (now in Preview). Our new low-level audio engine works with the Burst Compiler and is completely extensible in C#, enabling audio programmers and audio system developers to build their own custom audio system.
Join the DOTS audio discussion forum to ask questions or share your audio needs with us.
Learn moreUnity Animation (experimental)
You can see an early version of our upcoming animation system for DOTS in action in the DOTS Sample project. It offers core functionality such as animation blending, IK, root motion, layers and masking, with more features planned.
Get additional samplesUnity Docs Input
DOTS Runtime (preview)

With Project Tiny, Unity’s upcoming new highly modular runtime powered by DOTS, you will be able to build instant games that are small, light and fast. Download our Tiny Racing demo to get an early look at what we’re working on. It includes a preview of initial 3D rendering features and build targets for iOS/Android/HTML5/Windows & Mac.
Learn moreEntities documentation offers an overview of the essential packages you’ll need to create DOTS-based projects. See this guide for information on how to install DOTS packages that are in preview from Unity's package registry server. Also, learn what to expect from packages in different stages of their lifecycle.
Entities (preview)
The Entities package is the core of DOTS. It contains our Entity Component System (ECS) and is a prerequisite for using Conversion Workflow and Unity Live Link. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to install com.unity.entities.
DOTS Editor (preview)
The DOTS Editor package contains additional data analysis and visualization tooling. For example, it includes the Entity Preview Inspector that enables you to look deeply into how your GameObjects get converted into entities. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to install com.unity.dots.editor.
Hybrid Renderer (preview)
The Hybrid Renderer is a new pathway that gives the existing renderers the instance data they need in order to render objects. To convert GameObjects in a Scene to entities, the conversion system looks for a MeshRenderer and MeshFilter component on each GameObject and converts them into a RenderMesh component on the entity. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to install com.unity.rendering.hybrid.
Burst Compiler
The Burst Compiler translates jobified C# code into native code using LLVM. It optimizes your output for the platform you’re compiling for.
Unity Physics (preview)
We’re developing a brand-new highly performant physics engine built on DOTS technology. Use the Unity Physics package to benefit from a deterministic rigid body dynamics and spatial query system. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to install com.unity.physics.
Havok Physics (preview)
Havok Physics is a closed-source solution for customers who need to produce very complex physics simulations. It shares the same input and output data formats as Unity Physics, which means that you can swap between the two options at any time. Subscription plans for Unity Pro users are now available in the Unity Asset Store. This package is currently in preview.
Unity Transport (preview)
You can use the Unity Transport API to create and configure a server and a client for your multiplayer projects. The package is currently in preview and only supports Windows, Linux, Mac OSX, iOS and Android platforms. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to install com.unity.transport.
Unity NetCode (preview)
The Unity NetCode package provides a dedicated server model with client prediction that you can use to create multiplayer games. It’s currently in preview, with a focus on the architecture needed for synchronizing entities. This package is currently in preview, and isn’t available for browsing from the Package Manager window. Follow these steps to get started with NetCode.

Unity Mathematics
The Burst Compiler uses this math library to compile C# into highly efficient native code. It provides vector types and math functions with a shader-like syntax. This package is a dependency of the Burst Compiler package.
Sample projects for DOTS
Do you want to dive right into the code? Take a look at our library of samples on GitHub.
Entity Component System samples
Unity Physics samples
DOTS tutorials
Get an overview of the key terms and concepts in DOTS with simple examples. Then dive deeper into specific areas with talks from Unite 2019.
What is DOTS? Tutorial
Unite Copenhagen talks on DOT
DOTS Forum
Join our community forums to give feedback to the DOTS team and exchange information on new and upcoming DOTS features.
Visual Studio Code can be a great companion to Unity for editing and debugging C# files. All of the C# features are supported and more. In the screen below, you can see code colorization, bracket matching, IntelliSense, CodeLens and that's just the start.
Read on to find out how to configure Unity and your project to get the best possible experience.
Prerequisites
From Using .NET Core in Visual Studio Code:
Install the .NET Core SDK, which includes the Runtime and the
dotnet
command.[Windows only] Logout or restart Windows to allow changes to
%PATH%
to take effect.[macOS only] To avoid seeing 'Some projects have trouble loading. Please review the output for more details', make sure to install the latest stable Mono release.
Note: This version of Mono, which is installed into your system, will not interfere with the version of MonoDevelop that is installed by Unity.
Install the C# extension from the VS Code Marketplace.
Setup VS Code as Unity Script Editor
Open up Unity Preferences, External Tools, then browse for the Visual Studio Code executable as External Script Editor.
The Visual Studio Code executable can be found at /Applications/Visual Studio Code.app
on macOS, %localappdata%ProgramsMicrosoft VS CodeCode.exe
on Windows by default.
Unity has built-in support for opening scripts in Visual Studio Code as an external script editor on Windows and macOS. Unity will detect when Visual Studio Code is selected as an external script editor and pass the correct arguments to it when opening scripts from Unity. Unity will also set up a default .vscode/settings.json
with file excludes, if it does not already exist (from Unity 5.5 Release notes).
Unity version 2019.2 or above
Since 2019.2, it is required to use the Visual Studio Code editor package. The built-in support for opening scripts from Unity and getting csproj
and sln
files generated has been removed.
Editing Evolved
With the solution file selected, you are now ready to start editing with VS Code. Here is a list of some of the things you can expect:
- Syntax Highlighting
- Bracket matching
- IntelliSense
- Snippets
- CodeLens
- Peek
- Go-to Definition
- Code Actions/Lightbulbs
- Go to symbol
- Hover
Two topics that will help you are Basic Editing and C#. In the image below, you can see VS Code showing hover context, peeking references and more.
Unity Extensions
The community is continually developing more and more valuable extensions for Unity. Here are some popular extensions that you might find useful. You can search for more extensions in the VS Code Extension Marketplace.
The extensions shown above are dynamically queried. Select an extension tile above to read the description and reviews to decide which extension is best for you. See more in the Marketplace.
Enabling code completion (For recent versions of Unity)
If you are installing VS Code for the first time, you might be missing targeting packs required for Unity's code-completion (IntelliSense) in VS Code.
Targeting pack download links:
Steps:
- Stop VS Code or Unity running.
- Download and install the targeting pack for your targeted framework version / preferred version from one of the above links.
- Start Unity.
- Create and/or open an existing script in VS Code, through Unity, and you should now see code completions.
Enabling Unity warnings
Unity has a set of custom C# warnings, called analyzers, that check for common issues with your source code. These analyzers ship out of the box with Visual Studio but need to be set up manually in Visual Studio Code.
Due to how Unity handles its .csproj
files, it does not seem possible to install packages automatically. You will need to download the analyzers from the NuGet website manually. When you're done, open the package file using a tool such as 7zip and extract Microsoft.Unity.Analyzers.dll
onto your project's root folder. You can place it inside a folder named NuGet
, for example. Do not place it inside Assets
or Packages
, as that will cause Unity to try to process the .dll
, which will make it output an error in the console.
Next, create an omnisharp.json
file at the root folder of your project, as explained here. Analyzer support in OmniSharp is experimental at the moment, so we need to enable it explicitly. We also need to point it to the .dll
file we just extracted.
Your omnisharp.json
file should end up looking like this:
where './NuGet/microsoft.unity.analyzers.1.9.0'
is a relative path pointing to the folder containing the .dll
file. Depending on where you placed it, your path may look different.
The Unity analyzers should now be working in your project. You can test them by creating an empty FixedUpdate()
method inside one of your MonoBehavior
classes, which should trigger a The Unity message 'FixedUpdate' is empty
warning (UNT0001).
Note that while it is possible to activate these analyzers, the suppressors they ship with the package (that turn off other C# warnings that may conflict with these custom ones) may not be picked up by OmniSharp at the moment, according to this thread. You can still turn off specific rules manually by following these steps:
- Create a
.editorconfig
file in your project's root folder (next to Unity's.csproj
files). - Add the following contents to the file:
root=true
tells OmniSharp that this is your project root and it should stop looking for parent .editorconfig
files outside of this folder.
dotnet_diagnostic.IDE0051.severity = none
is an example of turning off the analyzer with ID IDE0051
by setting its severity level to none
. You can read more about these settings in the Analyzer overview. You can add as many of these rules as you wish to this file.
[*.cs]
indicates that our custom rules should apply to all C# scripts (files with the .cs
extension).
You are now ready to code in Visual Studio Code, while getting the same warnings as you would when using Visual Studio!
Next steps
Read on to learn more about:
- Basic Editing - Learn about the powerful VS Code editor.
- Code Navigation - Move quickly through your source code.
- Debugging - how to use the debugger with your project
- C# - learn about the C# support in VS Code
Common questions
Unity Docs Keycode
I don't have IntelliSense
You need to ensure that your solution is open in VS Code (not just a single file). Open the folder with your solution and you usually will not need to do anything else. If for some reason VS Code has not selected the right solution context, you can change the selected project by clicking on the OmniSharp flame icon on the status bar.
Choose the -CSharp
version of the solution file and VS Code will light up.
How can I change the file exclusions?
Unity creates a number of additional files that can clutter your workspace in VS Code. You can easily hide these so that you can focus on the files you actually want to edit.
Biden Sanders 110 Page Document
To do this, add the following JSON to your workspace settings.
As you can see below this will clean things up a lot...
Before | After |
---|
How can I debug Unity?
Unity User Manual
Install the Debugger for Unity extension. And check out Debugging with VS Code to learn more about VS Code debugging support.
