Here’s an overview on some of the key updates for programmer tools. For full details, check out the release notes.
iOS and Android improvements
We’ve introduced screen brightness controls with the new Screen.brightness property (iOS and Android) and improved the ReplayKit API (iOS). To make it easier to adjust your UI, we’ve added support for detecting the bounding box around the notch(es) (or camera hole) on Android via the new Screen.cutouts property.
We’ve also added an APK size check using Android App Bundle so you can easily determine the final application size for different targets.
You can implement the Screen.cutouts function to visualize the safe area and cutout information in your project.
The Burst Compiler takes C# jobs and produces highly optimized machine code via its LLVM-based backend technology. In this release, the Burst Compiler 1.1 includes several improvements for JIT compilation time and C#.
TypeCache API in Editor code
TypeCache provides a fast way to access types or methods marked with specific attributes, as well as types derived from a specific class or interface. It utilizes an internal native cache that is built for all assemblies loaded by the Editor. You can access this feature via the new UnityEditor.TypeCache C# API.
PhysX Cloth Solver
We’ve updated our Cloth solution to use the new NvCloth solver as part of our transition from PhysX 3.4 to PhysX 4.x. The provides a more refined codebase for your cloth projects and also delivers higher quality simulation and improved performance with new features like a better threading model.
DSPGraph audio mixing/rendering engine (Preview package)
This new Audio rendering/mixing system is built on top of Unity’s C# Job System. Shipped as experimental in 2019.1, it’s now available as a Preview package. You can use it with the Burst Compiler and it’s completely extensible in C#, enabling audio programmers and audio engine developers to build their custom audio system.
It’s the basis of the upcoming Data-Oriented Technology Stack (DOTS) audio system (among others). You can see it in action in the Megacity project released at GDC, where it powers 100,000 uniquely scattered 3D/spatial sound emitters, including neon signs, air-conditioning fans, and cars, producing a rich, realistic soundscape.
If you’ve been exploring DSPGraph in the context of our Megacity project, join us in the Data-Oriented Technology Stack audio forum. It’s the perfect place to ask questions or share your audio needs with us.
Intel® VTune™ Amplifier support
This release includes support for the Intel® VTune™ Amplifier for the Windows Standalone Player (x86, 64-bit) and Windows Editor, including sampling profiling of C# code.
With VTune you can locate performance bottlenecks fast. It offers advanced sampling and profiling techniques that let you quickly analyze your code, isolate issues, and deliver insights for optimizing performance on modern processors.
IDE support moving to packages
In this release we updated the default editors to Visual Studio 2019 and Visual Studio 2019 for Mac. We’ve also started to move the Code Editor Integrations (and thus IDEs) from core to packages, and exposed our C# APIs. With this release, the Visual Studio Code and JetBrains Rider integrations are available as packages; Visual Studio will be available as a package in an upcoming release.
We've also been working closely with the Rider and Visual Studio teams during the project. By contributing to integration packages for their respective IDEs, they will enable new features and improvements for Unity.
.NET 4.x is now default
We’ve removed the old .NET 3.5 Equivalent Scripting Runtime. Any projects that use the .NET 3.5 Equivalent Scripting Runtime will be automatically updated to use the .NET 4.x Equivalent Scripting Runtime.
We’re continuing to support the .NET 3.5 Equivalent Scripting Runtime in the Unity 2018 LTS (supported for two years after its release). This means that it will be supported until spring 2021.
Incremental Garbage Collection
Shipping as experimental on some platforms in Unity 2019.1, and on all platforms but WebGL in 2019.2, the Incremental Garbage Collector (GC) can split its work into multiple slices. That means that instead of one lengthy interruption of your program, it will do multiple, much shorter collections. While this will not make it faster overall, it will mean fewer GC spikes (hence smoother animations) because it distributes the workload over multiple frames.
To learn more, read our blog post here.