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.
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
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:
See what’s changed in Unity 2020 LTS since 2019 LTS and view the documentation for the affected areas.
For extra flexibility, you can now enter PrefabAn 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 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 Prefabs with the background grayed out. You can still choose to edit Prefabs in isolation.
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.
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).
The Asset Import Pipeline v2 is now the default asset pipeline.
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.
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.
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.
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.
Unity Hub version 2.4.2 includes improved workflows for managing projects, downloads, Unity Editor versions, and modules.
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.
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.
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.
NonReorderable
attribute to disable this function if you prefer.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 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.
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.
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.
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.
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.
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.
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 (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.
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.
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.
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.
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 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.
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.unity.cn/Packages/com.unity.shadergraph@10.0/manual/Upgrade-Guide–10–0-x.html) for further guidance.
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#.
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.
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.
The Input System package is now verified for production and offers a stable solution for most input needs.
AR Foundation, our multi-platform framework for ARAugmented Reality More info
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 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.
You can now also target Mac hardware’s next evolution with native support for Apple Silicon for the standalone player.
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.
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.
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.
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.
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.
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.
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.
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.
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.
We’ve improved the build compilation time. If you make changes that don’t involve code, for example, materials, shadersA program that runs on the GPU. 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.
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.
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.
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.
Unity Linker performs static analysis to strip managed code. It also recognizes a number of attributes and lets you annotate dependencies 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.
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 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.