Version: 2020.3
Offline documentation
Packages

New in Unity 2020 LTS

Long-term Support (LTS)

Unity 2020.3 is an LTS release, containing features released in 2020.1 and 2020.2, and is supported for two years. See the LTS release page for more information and other available LTS installers.

Release Notes

To find out more about the new features, changes, and improvements to Unity 2020 releases, see:
2020.3 Release Notes
2020.2 Release Notes
2020.1 Release Notes

Upgrade guides

If you are upgrading existing projects from an earlier version of Unity, read the Upgrade Guides for information about how your project might be affected. Here are the LTS specific upgrade guides:

What’s new

See what’s changed in Unity 2020 LTS since 2019 LTS and view the documentation for the affected areas.

What’s New page outline

Editor and team workflows

Changes introduced in Unity 2020.1

Editing Prefabs in context

For extra flexibility, you can now enter Prefab Mode without leaving the context of your sceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
and edit PrefabsAn asset type that allows you to store a GameObject complete with components and properties. The prefab acts as a template from which you can create new object instances in the scene. More info
See in Glossary
with the background grayed out. You can still choose to edit Prefabs in isolation.

Package Manager Updates

The Package Manager has several design updates, including new user interface (UI) iconography, improved layout, and better distinctions between information for currently installed packages and for available updates.

Importer Improvements

A new axis conversion setting lets you fix axis import issues without having to reopen meshes in 3D modeling software. You can now import custom properties for objects originating from SketchUp. When importing PNG files, you have the option to ignore gamma correction (which can help with color consistency across different platforms).

Asset Import Pipeline

The Asset Import Pipeline v2 is now the default asset pipeline.

Focused Inspector

Focused InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
See in Glossary
windows make it easier to see the Inspector details of a selected GameObject. To open a floating Inspector window for the selected GameObject or asset, right-click and select Properties. You can open multiple Focused Inspector windows at the same time, so you can assess or reference multiple objects while making changes to the Scene. You can also choose to focus on a specific component of a GameObject, which requires less screen space.

A better way to see task progress

Developers can now expose long-running, asynchronous operations with the new Progress API and the Background Tasks window. These tools work together to display task progress in its own Editor window. You can monitor subtasks, filter tasks by status, view global progress, and more.

Improved the Unity Accelerator

The local administrator dashboard for the Unity Accelerator lets you configure the tool for your team’s needs, assess its health, and access logs and metrics.

Addressables improvements

The Addressable Asset System provides an easy way to load assets by “address.” It handles asset management overhead by simplifying content pack creation and deployment. We’ve added several new features to the package, including significant user experience updates in the Unity Editor to improve the development workflows, such as sub-object support and runtime catalog updating.

Quality-of-life and usability improvements

  • You can now cut and paste GameObjectsThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
    See in Glossary
    in the Hierarchy window, and paste GameObjects as children.
  • Frame Selected in the Scene ViewAn interactive view into the world you are creating. You use the Scene View to select and position scenery, characters, cameras, lights, and all other types of Game Object. More info
    See in Glossary
    (pressing the “F” key when an object is selected) now handles a lot more object types and frames them better.
  • You can now display UVs, normals, tangents, and other MeshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info
    See in Glossary
    info in the Inspector preview. The Inspector preview for 3D Textures now displays the volumetric render, 3D texture slices or a signed distance field.
  • We’ve improved clipboard copy/paste across the Editor, so you can now, for example, copy arbitrary inspector properties like vectors, gradients, curves, and object references.
  • Improved naming and numbering for duplicate GameObjects in the Hierarchy.
  • The Version ControlA system for managing file changes. You can use Unity in conjunction with most common version control tools, including Perforce, Git, Mercurial and PlasticSCM. More info
    See in Glossary
    window now contains a search field. The Version Control settings have now moved to be their own asset.
  • When the Editor is stuck or not responding it now displays a progress bar.
  • We have improved the descriptions of progress bar messages for many additional file types.
  • The Scene Camera now matches the FOV of other camerasA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
    See in Glossary
    .

Changes introduced in Unity 2020.2

Unity Hub Improvements

Unity Hub version 2.4.2 includes improved workflows for managing projects, downloads, Unity Editor versions, and modules.

QuickSearch 2.0

QuickSearch 2.0 is now available, with even more search tokens and the ability to provide contextual completion when typing queries. You can now also search through all the Scenes and Prefabs of your project at once rather than being limited to just the open Scene.

Editor Coroutines out of Preview

With Editor Coroutines, now out of Preview, you can start the execution of iterator methods within the Editor, similar to how Coroutines inside MonoBehaviour scriptsA 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
are handled during runtime.

Profiler window new features

You can now add charts in the ProfilerA window that helps you to optimize your game. It shows how much time is spent in the various areas of your game. For example, it can report the percentage of time spent rendering, animating or in your game logic. More info
See in Glossary
window to get more performance insights and context for either existing or user-generated Profiler statistics.

Quality-of-life and usability improvements

Back to Top

Graphics and Rendering

Changes introduced in Unity 2020.1

Camera Stacking in the Universal Render Pipeline

You can now use Camera Stacking to layer the output of multiple Cameras and create a single combined output. This lets you create effects such as a 3D model in a 2D user interface (UI), or the cockpit of a vehicle.

Lighting Updates

Lighting Setting Assets let users change settings that are used by multiple Scenes simultaneously. This means that modifications to multiple properties can quickly propagate through your projects, which is ideal for lighting artists who might need to make global changes across several Scenes. It’s now much quicker to swap between lighting settings, for example, when moving between preview and production-quality bakes.

Overlap-free packing

Setting up models for lightmapping is now much simpler. To simplify the process of finding the required size for the pack margin at import, Unity now offers the Calculate Margin Method in the model importer. Here you can specify the minimum lightmapA pre-rendered texture that contains the effects of light sources on static objects in the scene. Lightmaps are overlaid on top of scene geometry to create the effect of lighting. More info
See in Glossary
resolution at which the model is used, and the minimum scale. From this input, Unity’s unwrapper calculates the required pack margin so no lightmaps overlap.

GPU and CPU Lightmapper: Improved sampling

We have implemented a better decorrelation method for CPU and GPU LightmappersA tool in Unity that bakes lightmaps according to the arrangement of lights and geometry in your scene. More info
See in Glossary
. These decorrelation improvements are active by default and do not need any user input. The result is lightmaps that converge upon the noiseless result in less time and display fewer artifacts.

Lightmapping optimizations

To cap the amount of time spent calculating each ray, the lightmapper needs to find some criteria for ending the path of each light ray. You can do this with a hard limit on the number of bounces that each ray is allowed. To further optimize the process, you can use a technique known as “Russian Roulette,” which randomly chooses paths to end early. This method considers how meaningful a path is to Global IlluminationA group of techniques that model both direct and indirect lighting to provide realistic lighting results. Unity has two global illumination systems that combine direct and indirect lighting.: Baked Global Illumination, and Realtime Global Illumination (deprecated).
See in Glossary
in the Scene. Each time a ray bounces on a dark surface increases the chances of that path ending early. Culling rays in this way reduces the overall bake time with generally little effect on lighting quality. Previously cookies were limited to real-time Lights only. Unity now supports cookies in the CPU and GPU Lightmappers. This means that baked and mixed-mode Lights also consider the influence of the cookie in attenuating both direct and indirect lighting.

Contributors/Receivers screen view mode

The Contributors and Receivers Scene View shows which objects influence Global Illumination (GI) within the Scene. This also makes it easier to see whether GI is received from lightmaps or Light ProbesLight probes store information about how light passes through space in your scene. A collection of light probes arranged within a given space can improve lighting on moving objects and static LOD scenery within that space. More info
See in Glossary
.

Changes introduced in Unity 2020.2

Universal Render Pipeline

The Universal Render Pipeline (URP) has new features that bring it closer to parity with the Built-In Render Pipeline. Screen Space Ambient Occlusion (SSAO) improves the visual quality of ambient lighting in your scenes. You can lower your build data size and improve loading times and with the new Complex Lit Shader. You can use Clear Coat maps to simulate and mimic materials such as car paint.

High Definition Render Pipeline

High Definition Render Pipeline (HDRP) now includes better tools to help you debug lighting, improvements to the decal system, Path tracing supports fog absorption and subsurface scattering for organic materials and a new depth of fieldA post-processing effect that simulates the focus properties of a camera lens. More info
See in Glossary
mode for producing path-traced images with high-quality defocus blur and more. A new HDRP sample scene is available that is a great starting point for projects aiming at high-end graphics. This template includes multiple setups of physically based light intensities, and more, to help you start creating realistic scenes with HDRP. Download it from the Unity Hub.

Back to Top

Artist and Cinematic tools

Changes introduced in Unity 2020.1

2D Animation performance improved with Burst

To improve the performance of Animated SpriteA 2D graphic objects. If you are used to working in 3D, Sprites are essentially just standard textures but there are special techniques for combining and managing sprite textures for efficiency and convenience during development. More info
See in Glossary
deformation at runtime, install the Burst Compiler and Collections packages via the Package Manager. This allows the 2D Animation package to use Burst compilation and low-level array utilities to speed up Unity’s processing of Sprite mesh deformation.

2D Sprite Shape corners and mesh baking

A new “Stretched” option is available for Corners to connect adjacent edges without custom Corner Sprites. This option builds geometry to connect adjacent edges without the need to specify custom Corner Sprites in the Sprite Shape Profile. Scripting API support for the new corner mode will be added in a later release. Sprite Shape mesh baking lets you store mesh data while editing so it can be reloaded at runtime, avoiding unnecessary runtime mesh generation.

Updated 2D template

The 2D default template has been updated. It now includes all the verified 2D tools, precompiled, so new projects load faster with the entire 2D toolset at your disposal. The template also includes packages and default settings that are optimal for a 2D project. Learn more in the forum. Our 2D sample project Lost Crypt, which showcases all the recent 2D tools, has been updated to 2020.1. This project demonstrates how all the 2D tools can work together to create compelling 2D games.

2D Physics updates

This release features many updates to 2D Physics, including improvements to Rigidbody2D XY Position Constraint, which makes a RigidbodyA component that allows a GameObject to be affected by simulated gravity and other forces. More info
See in Glossary
completely solid under any force and has almost zero runtime cost. This feature resulted from changes to Box2D physics. The 2D Physics Examples project has been updated with many Scenes to demonstrate all 2D physics features.

Cinemachine improvements

Cinemachine is a suite of tools for dynamic, smart, codeless cameras that let the best shots emerge based on scene composition and interaction. This lets you tune, iterate, experiment and create camera behaviors in real-time. With 2020.1, version 2.5 of Cinemachine is now a verified packageWhen a package passes release cycle testing for a specific version of Unity, it receives the Verified For designation. This means that these packages are guaranteed to work with the designated version of Unity.
See in Glossary
and recommended for productions of any scale.

Changes introduced in Unity 2020.2

Shader Graph new features

Shader Graph includes several new features that improve the workflow for technical artists, such as better Graph Editor performance. See the [Shader Graph Upgrade guide]((https://docs.unity3d.com/Packages/com.unity.shadergraph@10.0/manual/Upgrade-Guide–10–0-x.html) for further guidance.

VFX Graph updates

VFX Graph updates include Output Events, allowing users to synchronize lights, sound, physical reactions, or gameplay based on spawn events via a delegate interface in C#.

Animation Rigging package

The Animation RiggingThe process of building a skeleton hierarchy of joints for your mesh. Performed with an external tool, such as Blender or Autodesk Maya. More info
See in Glossary
package is now verified. It enables procedural control of animated skeletons at runtime and authoring of new animation clipsAnimation data that can be used for animated characters or simple animations. It is a simple “unit” piece of motion, such as (one specific instance of) “Idle”, “Walk” or “Run”. More info
See in Glossary
in the Unity Editor.

Global Illumination improvements

For Global Illumination, both the GPU Lightmapper and the CPU Lightmapper now have a higher bounce limit. In addition, they now use Blue Noise Sampling for improved lightmap quality and have several other improvements.

Back to Top

Platforms

Changes introduced in Unity 2020.1

Input System verified package

The Input System package is now verified for production and offers a stable solution for most input needs.

Changes introduced in Unity 2020.2

AR Foundation mesh support

AR Foundation, our multi-platform framework for ARAugmented Reality (AR) uses computer graphics or video composited on top of a live video feed to augment the view and create interaction with real and virtual objects.
See in Glossary
development, now includes support for meshing. AR experiences blend much more seamlessly into the real world because virtual content can be occluded with real-world objects and realistically interact with the physical environment.

Samsung Adaptive Performance 2.0

Samsung Adaptive Performance 2.0 comes with new Sample Projects to showcase different features, including Variable Refresh Rate, Scalers, and Adaptive Performance Simulator extension, to emulate Adaptive Performance on any device.

Apple Silicon supports

You can now also target Mac hardware’s next evolution with native support for Apple Silicon for the standalone player.

Back to Top

Programmer tools

Changes introduced in 2020.1

Profiling tools improvements

The Profiler connection to a Player is now more stable, particularly with low-end Android devices. Metadata support for the C# Profiler API allows you to define what parameters can be exposed in the Profiler so you can get more context from your data and better understand what is affecting performance. We have significantly reduced capture memory overhead and capture times of the Memory Profiler Preview package. You can access GPU profile data through the Recorder API. Use the Sampler API to collect the data and visualize it in your own runtime performance stats overlay.

The Profiler as a standalone app and flow event visualization

You can now launch the Profiler as a standalone app. This moves the tool to a separate process outside of Unity, reducing the performance overhead when profiling the Editor and creating cleaner profile data.

Verified IDE packages now include Visual Studio

The Visual Studio integration is now a package and we will not develop the built-in support further. The package also includes new features and improvements, like a faster startup of Visual Studio.

New C# debugging workflow

The new C# debugging workflow makes the Editor run with C# code optimization in Release Mode by default, improving performance when running your project in Play Mode. To debug your project, you must enable Debug Mode before entering Play Mode. To switch between code optimization modes without restarting the Editor, select the Debug Button at the bottom right of the Unity Editor Status Bar.

Create fields for generic types directly

We’ve improved support for serializing fields of generic types. Previously, if you had a generic type (such as class MyClass>), and you wanted to make a field using that type, you had to define a non-generic subclass of it (like class MyClassInt : MyClassint>). We’ve removed this limitation, so you no longer need to declare the generic subclass, and you can use the generic type directly.

Burst Compiler 1.3

We are evolving the Burst Compiler as a development tool, adding native debugging capabilities. Using a native debugger attached to Unity, you can now set breakpoints, skip over and step into code. You can also inspect and navigate call stacks, variables, autos and threads.

Changes introduced in 2020.2

Improve compilation times with deterministic compilation

Unity now offers a -deterministic compilation option when compiling C# scripts. This option lets you avoid unnecessary recompiling of assembly definition (.asmdef) references if the public metadata for the assembly does not change when compiling scripts for the Editor. This is particularly useful for reducing iteration time when you’re making changes to assemblies that have many direct and/or indirect references. Watch the ‘Improve compilation times with deterministic C# compilation by default in Unity 2020.2’ video to find out more.

C# 8 support

Unity now supports the newest C# 8 features and enhancements, excluding default interface methods. This includes nullable reference types, enabling the compiler to show a warning when you attempt to assign null to a reference type variable. Switch expression with pattern matching lets you write conditional code in a more streamlined way.

Root Namespace available in the Assembly Definition settings

Namespaces in C# provide an efficient way to organize your code and avoid class naming collisionsA collision occurs when the physics engine detects that the colliders of two GameObjects make contact or overlap, when at least one has a Rigidbody component and is in motion. More info
See in Glossary
with other packages and libraries. Root Namespace is now available as a new field in the asmdef inspector and is used to automatically add a namespace when creating a new script in Unity and in Visual Studio and Rider. Remember to update the Visual Studio and Rider packages to the latest version if you plan to use this functionality.

Faster build compilation

We’ve improved the build compilation time. If you make changes that don’t involve code, for example, materials, shadersA small script that contains the mathematical calculations and algorithms for calculating the Color of each pixel rendered, based on the lighting input and the Material configuration. More info
See in Glossary
or prefabs, the IL2CPPA Unity-developed scripting back-end which you can use as an alternative to Mono when building projects for some platforms. More info
See in Glossary
conversion from .NET assemblies to C++ is now skipped entirely when building a player.

Consistent Time.deltaTime

We’ve fixed the inconsistent Time.deltaTime values that led to stuttering object movements during gameplay. We have also refactored the TimeManager interface to make frame time calculations more stable and provide smoother object movement when the game is running at a stable frame rate. These time stability improvements are supported on various platforms.

Performance improvements

Unity 2020.2 features several significant optimizations, including to Nested Prefabs, resulting in dramatically faster sorting and faster lookups. Searches in the Editor scripted importers registration function have tested to be up to 800 times faster. We’ve also refactored Camera.main, reducing the time it takes to query it by hundreds of milliseconds in some projects.

Editor Coroutines and faster workflows with Configurable Enter Play Mode

Configurable Enter Play Mode is no longer an experimental feature. This lets you disable either, or both, of the “Domain Reload” and “Scene Reload” actions to speed up entering Play Mode. With Editor Coroutines, now out of Preview, you can start the execution of iterator methods within the Editor, similar to how Coroutines inside MonoBehaviour scripts are handled during runtime.

Managed code stripping with Unity Linker

Unity Linker performs static analysis to strip managed code. It also recognizes a number of attributes and lets you annotate dependencies
See in Glossary
where it can’t identify them. The tool receives API updates to match Mono IL Linker. Unity Linker can detect some simple reflection patterns, reducing the need to use link.xml files.

Roslyn analyzer improvements

The compilation pipeline now supports Roslyn analyzers. This lets you run C# code analyzers asynchronously in the background inside the Unity Editor without interrupting your iteration workflow. You can also run them synchronously from the command line.

Unity Safe Mode

Unity Safe Mode improves how Unity behaves when opening a project that has script compilation errors. If the Editor detects compilation errors at startup, you will now be prompted to enter Safe Mode. This presents you with an environment designed for resolving them, so that you can quickly return your project to a functional state, without waiting for unnecessary imports of your project’s assets. This feature will simplify and speed up the process of upgrading a project to a new Unity version, and it will help teams working on large projects by reducing the number of cases in which the library folder contains incorrect import artifacts.

Back to Top

Offline documentation
Packages