With Unity 2020.2, we’re continuing our 2020 focus on performance, stability and workflow improvements. Join the beta and let us know what you think about the upcoming tools.
Based on our community’s feedback, we committed to ensuring greater stability and improving quality of life for all users as we entered 2020. This included making the Unity 2019 LTS the default version. We also reduced the number of TECH streams from three releases per year to just two to provide an extended stabilization phase.
Unity 2020 LTS and the road to 2021
Before we dive into what’s new in the beta, let’s summarize what will come next:
- For those of you who prefer to wait until the software is out of beta, we expect the full release of Unity 2020.2 to ship later this year with a TECH release level of stability. Early feedback from all of you beta users is a crucial component of our work towards this goal.
- The Unity 2020 LTS release is currently scheduled for March 2021. Unity 2020 LTS will contain all the new features and improvements from 2020.1 and 2020.2, as well as all fixes we’ve added in subsequent updates. This way the long-term support (LTS) release will bring maximum stability for those of you aiming to ship your projects in the near future.
- As we look beyond this year, we are evolving how we work. We are focusing on select things, and doing them better. We are assigning bigger teams to deliver higher quality on the features that are most important to you. Learn more about our focus areas for 2021 in our recent blog post.
What’s new in Unity 2020.2?
We created an overview of some of the new features and improvements you might find interesting to try out. We’ll also show you some of the upcoming features in action during the Unity 2020.2 beta webinar. Members of our R&D teams will be there to answer your questions live, like we did for the previous beta. To take part, sign up here:
Join the rest of the community in our Betas & Experimental Features forums to talk about specific feature areas. If you want to be among the first to learn about new features or packages available for feedback, we also encourage you to sign up for our beta newsletter.
Programmer tools and performance improvements
As projects grow in complexity, compiling new code changes can become increasingly slower, and start impacting your team’s workflow and productivity. In Unity 2020.2, we designed several features to help optimize compilation times.
We use Roslyn reference assemblies in the compilation pipeline to avoid unnecessary recompiling of asmdef references if the public metadata for the assembly does not change when compiling scripts for the Editor; for example, if you modify only private methods or fields, only the modified assembly will be recompiled. With Roslyn analyzers you can run C# code analyzers asynchronously in the background inside the Unity Editor without interrupting the user iteration workflow and run them synchronously from the command line. Consider using Roslyn analyzers and ruleset files in Unity projects to inspect your code for style, quality, and other issues. In Unity 2020.2 we now also offer a “-deterministic” compilation option when compiling C#; however, it doesn’t support the use of AssemblyVersion with a wildcard(*), in which case an error message will be emitted with details about how to disable deterministic compilation.
Editor Iteration Profiler (EIP) can help you identify bottlenecks in your code during domain reloads (Enter Playmode, Script Compilation, etc.). It’s an experimental feature and available as a research Package – just follow the instructions to try it out, and share your feedback with us.
Root Namespace is a new field in the asmdef inspector that is used to automatically add a namespace when creating a new script in Unity and in Visual Studio and Rider.
0-Change rebuilds in IL2CPP platforms. If you make changes that don’t involve code changes, for example to materials, shaders or prefabs, IL2CPP conversion from .NET assemblies to C++ will be skipped. This will improve artist workflows and speed up iteration.
IL2CPP player build time improvement. The process of converting .NET assemblies into C++ files has historically been single threaded. In Unity 2020.2, the application that processes the conversion (il2cpp.exe) takes advantage of modern multi-core processors, dramatically decreasing the overall IL2CPP player build times. Find more information in the forum thread.
C# 8 support. Unity 2020.2 supports all the new C# 8 features and enhancements, except default interface methods.
Time.deltaTime stability improvements. Frame time calculations are more stable now, providing much smoother object movement when the game is running at a stable frame rate. Unity 2020.2 has time stability improvements on iOS, macOS, PS4, Switch, tvOS, UWP, Windows and Xbox One. Improvements on Android, Windows/Linux on Vulkan and XR will come later. See this forum discussion for more details.
Unity Linker performs static analysis to strip managed code. It also recognizes a number of Attributes and allows you to annotate dependencies where it is unable to identify them. In Unity 2020.2 the tool received API updates to match Mono IL Linker. Starting in 2020.1 some simple reflection patterns can now be automatically detected, avoiding the need to use link.xml files.
We exposed the existing Profiler stats as Runtime API. This allows you to read the values of performance statistics for the existing Profiler areas such as memory, rendering and others in Players. You can use that data to display performance heads-up displays (HUDs) on your project while running on the target device or to build other performance tooling for your own needs.
We also added a number of visualization improvements. The ability to add charts in the Profiler Window gives you more performance context for either existing or user-generated Profiler statistics. Flow Events charts can now display serial task dependencies in the Profiler Timeline and help you identify which tasks in a sequence of operations your application is spending time on.
Finally we made a large number of Core Performance Improvements, including:
- Camera.main used to be a performance costly function to call. With this optimization a dedicated list of objects with the main camera tag is maintained, and searching this list is almost instantaneous.
- UV Unwrapping on model import has been a time-consuming operation, as the unwrapping happens in a separate process. This process is now being kept alive, making this operation up to 50x faster
- Gizmo rendering is now considerably faster, for both general gizmos and LightProbe gizmos.
Nested Prefab loading in the editor has been optimized and sped up by up to 20x.
Editor and team workflows
Workflow improvements are one of the main pillars of this year’s release. Our teams have been monitoring user feedback and requests, and how the experience can be improved for all teams that interact with the Editor on a daily basis. We are also inviting testers to try an early version of the new tools that will help you localize your projects and tooling.
A Localization package is now available for testing, providing tools for adding support for multiple languages and regional variants in text or culture-specific assets, such as audio or textures, to your project. To get this Preview package, type in com.unity.localization under “Add package from git URL” in the Package Manager. Or follow the instructions in the documentation to add it by editing your project manifest. This guide will help you get started, and you can let us know what you think in the forum. Help us make it better by sharing your feedback directly with the team – register for a user interview.
Editor package localization. Users or developers of Unity, packages or custom tools can add support for Japanese, Korean, Chinese Simplified and Chinese Traditional with this new Experimental feature (enabled if you install a Language pack module). Create dictionaries (PO files using GNU gettext) for any of the supported languages and desired features. Learn more about the work in the forum.
PhysX Articulation Body component improvements. You can now link Rigidbody hierarchies to ArticulationBody hierarchies with regular joints, solved by the iterative solver and propagating the resulting forces in both of the hierarchies automatically. This is particularly helpful if you work in robotics or physics-based games. Additionally, new APIs are exposed that include support for physically based inverse kinematics (IK).
Asset Database consistency check. Unity 2020.2 provides a feature that checks assets produced by importers remain consistent with the original asset and its dependencies. It can be enabled by manual Reimport or command line.
Unity Accelerator now counts with the ability to mirror cache along with the new policy table where users can centralize access restrictions for items stored in their Accelerators. Join in the forum discussions.
Prefab support for AssetPostprocessor. If OnPostprocessPrefab is implemented, post-processors can modify the prefab. All added objects will get the DontSaveInEditor flag to avoid changes being applied to the source prefab.
Prefabs import boasts a set of improvements to increase correctness, performance, scalability, cacheability and other attributes. Regarding script dependencies, Prefabs that contain MonoBehaviours will now be in sync with the script and won’t lose references in the case of compile errors. Learn more about the work in the forum.
Unity Hub version 2.4.0 delivers several improvements to the UX such as clearer messaging and workflows for managing projects, downloads, Unity editors and modules. It also brings new dynamic downloadable templates to make learning game development more fun.
Package Manager – scoped registries UX and management improvements. A new dialogue informs users when a new scoped registry is added to the project. Manage all scoped registries in the project (add/remove registry and scope) from Project Settings. You can filter “Unity Registry” and “My Registry” packages by author to more easily browse or search packages from their source registry.
Quick Search 2.0 comes with more search tokens and provides contextual completion to assist when typing queries. Scene searching is no longer limited to the open Scene; it’s now possible to search through all the Scenes and Prefabs of your project at once. This is achieved by indexing their content, which happens in the background and can be configured using the Index Manager.
Finally, Unity 2020.2 also comes packed quality-of-life improvements across the Editor such as:
- Arrays and Lists in the inspector are reorderable, and the attribute [NonReorderable] can disable this function
- Scene move/rotate/scale handle lines are thicker and configurable
- Texture import pipeline for 2DArray and 3D textures – import your “flipbook” array/3D textures directly without having to write custom C# code
- The hierarchy view improvements:
- new “Create Empty Parent” item
- version status for Prefabs is displayed
- when you create a new object it has the Rename mode by default
- you can mark an object as “default parent” in Hierarchy view, so when you drag new assets into the Scene they get parented to that object
- Mesh inspector can visualize blend shapes
- Multiple Prefabs can be dragged into the Scene simultaneously
- Inspector properties Copy/Paste supports user-defined C# types
- Scripting #define directives in the Project Settings are now shown as an Array
- Frame Selected on an already selected object zooms into its pivot point
- Project window asset renames and moves are undoable
- GameObject inspector displays selected object count next to the name field]
With Unity 2020.2 we continue our focus on quality-of-life fixes through upgrading aggregate workflows and the general user experience working with our artist tooling. We are working towards bringing more consistency across all our node-based development tools and maturing our rendering pipelines.
Shader Graph 10.0 includes several new features that improve the workflow for technical artists. Graph Editor performance has been improved. The end point of the Graph is now a modular collection of feature blocks (the Master Stack) rather than a monolithic Master Node. This allows a single graph to be easily switched between shader models such as Lit or Hair. The Graph Inspector consolidates the settings from Master Nodes and other nodes on the graph into a single location, and also controls the active Target and shading model for the graph. The Graph now visually indicates which features and nodes are compatible with the current setting selections. Note that with Unity 2020.2, your existing Graphs will upgrade to use Master Stacks. Check the Upgrade Guide in the Shader Graph package docs for further explanation of these workflow improvements.
VFX Graph updates in Unity 2020.2 include a number of features and improvements. The addition of Output Events allows users to synchronize lights, sound, physical reactions, or game play based on Spawn Events via a delegate interface in C#. Among the experimental features, Static Mesh Sampling enables the spawning of particles directly from meshes. The Multi-Mesh feature allows for up to 4 meshes to be used by the same mesh output, making it easier to add per-particle variety to your effects. With Per Particle LOD, you’ll be able to optimize your effects by setting LOD meshes based on the screen size in the mesh output. We also added frustum culling as an optimization to discard the rendering of off-screen particles. Experimental features are hidden behind the experimental checkbox in Preferences > Visual Effect.
For Global Illumination, we increased the bounce limit for both GPU and CPU Lightmappers. In addition, they now use Blue Noise Sampling to improve the quality of lightmaps. We have reduced memory usage in the GPU Lightmapper when baking large lightmaps by disabling progressive updates when memory runs low and added the ability for the lightmapper to automatically throttle memory usage internally. This means that larger projects can be baked with GPU Lightmapper.
Unity 2020.2 also brings a series of improvements for those working with cinematics or in the Media and Entertainment industry:
- Recorder API enables the automation of video recording in the Editor in a Continuous Integration system, useful when a team member updates an asset to automatically generate a new video version
- ProRes encoding is now available in the Unity Recorder for native high-quality and video-editing-friendly video output on Windows and Mac Editor
- More passes available (motion vectors, more lighting passes), compressed EXR and HDR output for the AOV Recorder (HDRP only). AOV Recorder allows you to export render passes for external compositing in software like Nuke or Da Vinci Resolve
UI Toolkit is included in the Editor as a fully integrated core feature, and we made a Preview version that you can install to access the new runtime UI features. It’s available in the Package Manager by adding com.unity.ui under “Add package from git URL”. TextMesh Pro’s core text technology is being integrated in UI Toolkit as the way to render fonts, and we’re adding support for the new Input System and for Sprites and SpriteAtlas. We also added “live reload” of UXML and USS in the GameView.
For the UI Builder available as a Preview package, we’ve added several usability improvements such as multi-selection support and in-place text editing directly in the Canvas. We’re also improving working with multiple UI documents by authoring subdocuments in context or in isolation. Furthermore, you can enable Editor Extension Authoring to see controls meant for use within the Editor.
Scriptable Render Pipeline
We aim to incorporate user feedback related to the Scriptable Render Pipeline (SRP) as we continue to evolve the SRP and improve the quality of the graphics packages. You can see our roadmap here.
The Universal Render Pipeline (URP), now in version 10, has new features that bring it closer to parity with the Built-In Render Pipeline. With Screen Space Ambient Occlusion (SSAO) you can improve the visual quality of ambient lighting in your scenes. SSAO approximates brightness or darkness of a specific surface based on its surrounding surfaces and how exposed it is to ambient lighting. You can now lower your build data size and improve loading times by stripping out certain shaders that aren’t in use. With URP Lit Shader you now have additional surface inputs such as detail, detail normal, height and parallax maps. The URP now supports Clear Coat maps through the new Complex Lit shader. Clear Coat maps can be used to simulate and mimic materials such as car paint.
New additions to version 10 of the High Definition Render Pipeline (HDRP) include better tools to help you debug lighting. For example, lighting debug view modes allows you to separate, visualize and debug the various components of lighting in your scene. This release includes additional improvements to the Decal system. As part of these improvements, a new Decal layers feature allows you to specify which decals affect which Materials on a layer-by-layer basis. Path tracing supports fog absorption and Subsurface Scattering for use when you make organic materials, like skin, look smooth and natural rather than rough and plastic-like. HDRP also includes a new depth of field mode for producing path-traced images with high-quality defocus blur and much more. There are improvements to ray tracing as well. HDRP ray tracing now has a set of fallbacks for transparents so the visuals of transparent GameObjects are coherent both with and without recursive rendering and refraction. With this release HDRP supports colored ray-traced shadows for transparent and transmissive GameObject. Additionally the denoiser for ray-traced shadows now produces higher quality results. HDRP’s ray-traced reflection (RTR) solution now supports transparent materials, useful for transparent surfaces such as windows or water. See more information on new HDRP additions and improvements.
Refinements in the recent 2D tools and the 2D experience within the Unity Editor can be found in this release alongside stability and performance improvements.
Streamlined menus. 2D menu items are now displayed in dedicated top-level menus for object and asset creation. We’ve also added menus for some of the newer features. This improved user experience (UX) should be more intuitive for new users and faster for those working on 2D projects.
Improved 2D default assets. Previously, new 2D GameObjects were represented by a small pixel sprite that users had to change to make the GameObject usable. Now, you can pick from among a variety of 2D GameObjects with primitive shapes that will also match their Collider 2D shape, several predefined 2D Physics, Tilemaps and Sprite Shape options – all of which improves gameplay prototyping and general usability. Let us know what you think in the forum.
Tilemap Extras preview package. A selection of tools from the 2D Extras GitHub repository are now available via Package Manager. This gives you easier access to the tools while we consolidate new changes into the package. Some of the features in this package are Animated tiles, Rule Tiles for all Tilemap types and different brushes. Read more about it in the Tilemap Extras documentation. Thanks to everyone who has contributed to the repository over the years. Please join us in the Tilemap Extras forum to let us know what you think.
2D Animation 5.0 with 2D IK. In the new 2D Animation package version, 2D IK is no longer a standalone package. Improvements include hideable gizmos and better visualization of IK handles. 2D IK allows animators using 2D skeletal animation to save time by automatically calculating the position and rotation of a chain of bones realistically following the parent bone.
Whether you’re building experiences for augmented or virtual reality, mobile, web, desktop or consoles, we work closely with key platform partners to ensure your development process is optimized for whatever comes next.
Native Apple Silicon support. With Unity 2020.2, you can target the next evolution of Mac hardware with native support for Apple silicon for the standalone player. Check out the forum for more information and discussion.
Adaptive Performance 2.0 comes with new Sample Projects to showcase different new features including Variable Refresh Rate, Scalers, and Adaptive Performance Simulator extension to emulate Adaptive Performance on any device. Learn more about it in the forum.
Input System 1.1 brings a series of fixes and some improvements: You can now save and load rebinds as JSON (see the RebindSaveLoad.cs sample script) and Device layouts can now be precompiled, greatly reducing instantiation time and garbage collection (GC) heap cost for these devices. Help us with feedback in the Input System forum.
Unity 2020.2 beta: Services
The Unity Distribution Portal (UDP) enables you to distribute your game to multiple app stores through a single hub. In Unity2020.2 the UDP Package works independently from UnityIAP, meaning you can add the UDP package to your project whether or not UnityIAP is implemented in the project, and if it is, you can do so without risking conflicts. To enable UDP simply go to the Services Window.
Updates to Game Foundation, our prebuilt and extensible common in-app purchase (IAP) game system, include the option to quickly add inventory, currency, purchasing and in-game store features to your games, with flexible common systems and customizable prefabs provided out of the box.
Getting started with Unity 2020.2 beta
A friendly reminder: before you take the beta for a spin, we encourage you to back up your project. This advice always applies when you are working with our beta and Preview packages. Remember, the beta is not intended to be used for production – it is for you to evaluate new features and for us to garner your feedback. For projects that are in production, we recommend that you use verified packages and our most recent Unity 2019 LTS.
Happy testing! We look forward to reviewing your feedback.