Improved the security of model import by updating the bundled Autodesk FBX SDK to 2020.3.11, addressing two buffer-overflow vulnerabilities in FBX file parsing.
Release Notes Search
Search changes, fixes, and known issues across Unity releases.
Added a log message to warn when the activeBuildProfile flag is used and the build target is not supported.
EditorImprovement
Improved Editor startup time by avoiding an expensive full-assembly type scan during mode discovery
EditorImprovement
Improved the CacheServerV2 integration tests by spawning a single cache server for the suite of tests rather than spawning a new server for each test. This prevents the instability in restarting the server process between tests.
Project Auditor: detect boxing of structs used in List comparisons.
EditorImprovement
Project Auditor: redesign the home page. Move URP migration wizard to the home page.
EditorImprovement
Fixed performance metrics being reported without a sum, which prevented average values from being calculated.
Engine DiagnosticsImprovement
Improved live baking diff performance in worlds with many entities.
EntitiesImprovement
Improved Memory Profiler attribution of lighting native memory, which was previously reported as Unrooted.
Improved Render Graph Viewer empty state message when connected to a player
Mesh-related memory should now be correctly labeled in the memory profiler
A boxing allocation is no longer performed when the boxed value is immediately discarded.
IL2CPPImprovement
Calling GetType() on a boxed value type, including comparing the result against a typeof() expression, no longer causes a heap allocation.
IL2CPPImprovement
Casting between an enum and its underlying integer type through object no longer causes a heap allocation.
IL2CPPImprovement
GC.KeepAlive no longer causes a heap allocation when it is passed a value type.
IL2CPPImprovement
Generated code for some cases of pointer arithmetic is now vectorized by Clang.
IL2CPPImprovement
Removed un-needing boxing that can occur with the if (x is Type t) pattern.
IL2CPPImprovement
Updated Math.Pow and MathF.Pow to match behavior of .NET.
IL2CPPImprovement
Fixed Append being allowed when changing Symlink Sources option
iOSImprovement
iOS builds now use .NET 10 base class libraries.
iOSImprovement
Make AppDelegate and SceneDelegate methods in UnityPlayer public
iOSImprovement
Linux IL2CPP builds now use .NET 10 base class libraries.
LinuxImprovement
macOS IL2CPP builds now use .NET 10 base class libraries.
macOSImprovement
Analytics for .unityPackage signature at export time, from UI, API and CLI
Package ManagerImprovement
Improves keyboard navigation in the package manager details and toolbar
Package ManagerImprovement
Improved the accuracy of bouncing, which is now resolved after the rest of the contact solving each simulation step.
Improved the performance of contact creation and shape queries.
Improved the PhysicsCore2D Profiler to show timing information in a consistent hierarchy which indicates not only the times taken but also where in relation to other timings they occur.
Improved native memory attribution so several kernel, plugin and file system allocations are reported against a named root instead of Unrooted in the Memory Profiler.
Replaced the Scene View orientation gizmo with a lighter UI Toolkit implementation, reducing its per-repaint cost and giving it a new flat-icon style.
Scene/Game ViewImprovement
Improved how text-serialized files with invalid object headers are loaded: Unity now reports an error instead of reading the object's fileID from part of the header, or skipping the object without an error.
SerializationImprovement
Improved loading of serialized data whose layout does not match the script it belongs to: the player now logs a serialization error instead of crashing.
SerializationImprovement
The editor console and shader inspector now emit warnings when invalid KEYWORD_TYPE_FLAG keywords are detected.
ShadersImprovement
Improved test result reporting speed for large test assemblies, where looking up each test's source file and line no longer slows the run down as the number of tests grows.
Test FrameworkImprovement
Added a one-time scan that lists themes affected by the theme priority change, with a report file written to Logs/ and an on-demand scan button in Project Settings > UI Toolkit.
UI ToolkitImprovement
Added a warning when a theme style sheet is imported by a regular style sheet, since the theme's priority does not apply in that case.
UI ToolkitImprovement
Added nested formats to the Smart Strings time formatter, so a nested list format can choose the separators between time units. The time formatter also accepts a DateTime or DateTimeOffset without format text.
UI ToolkitImprovement
Importing a localization table collection now warns when two of its keys hold the same ID, or when it has no shared table data.
Improved Smart Strings: plural formatting now works for languages without plural forms and for a count of two in French, conditional formats read numbers the same way in every culture, and dictionary lookups follow the case-sensitivity setting.
UI ToolkitImprovement
Improved style sheet import diagnostics: an @import placed after style rules now produces a warning explaining that its position does not affect selector priority.
UI ToolkitImprovement
Reduced the amount of memory each VisualElement uses.
UI ToolkitImprovement
Add Depth Pyramid for GTAO in URP
URPImprovement
Reduced Editor startup time on Windows by removing an unnecessary wait for a background device-identifier lookup.
WindowsImprovement
Windows IL2CPP builds now use .NET 10 base class libraries.
WindowsImprovement
Graphics: Reduced CPU main thread time on URP XR Quad Views by having the inner view reuse the outer view's cached volume stack instead of re-evaluating the volume framework per stacked camera per frame.
XRImprovement
Graphics: Reduced GPU frame time on Quad Views by reprojecting the outer pass's motion vectors into the inner pass instead of rendering its own motion vector pass.
XRImprovement
Improved GPU performance when QuadViews are enabled in Forward/Forward+ (and when not using SpaceWarp) via reducing the amount of redundant geometry rendering in the focus-inner region during the low-resolution periphery pass.
XRImprovement
Added: Added BuildAnalysisUtility.OpenWindow, which opens the Build Analysis window with a specific build selected.
Build PipelineAPI change
Deprecated: Deprecated the Write Groups API
EntitiesBreaking
Deprecated: Deprecated the HierarchySearchProvider class. The standalone Entities Hierarchy window has been replaced by the integrated Editor Hierarchy window.
EntitiesBreaking
Obsoleted: Obsoleted Unity.Assertions.Assert in favour of UnityEngine.Assertions.Assert, which it forwarded to. The API Updater converts existing uses.
EntitiesBreaking
Removed: Removed the Entities Journaling window and the EntitiesJournaling API, deprecated in Unity 6.5; use the IDebugOnAdded and IDebugOnRemoved component lifecycle callbacks instead.
EntitiesBreaking
Deprecated: Deprecated ProbeVolumeBakingSet.sceneGUIDs (use scenesInBakingSet instead), and the string overloads of TryAddScene, RemoveScene, SetSceneBaking (use the GUID overloads instead).
GIBreaking
Deprecated: Deprecated ProbeVolumeBakingSet.sceneGUIDs (use scenesInBakingSet instead), and the string overloads of TryAddScene, RemoveScene, SetSceneBaking (use the GUID overloads instead).
GIBreaking
Deprecated: LightingSettings.lightmapper is now deprecated. The lightmapper in use is determined by the Default Light Baker setting in the Graphics settings (UnityEditor.Rendering.EditorGraphicsSettings.defaultLightBaker).
GIBreaking
Obsoleted: LightingSettings.Lightmapper.ProgressiveCPU now produces a compiler error; use LightingSettings.Lightmapper.ProgressiveGPU or LightingSettings.Lightmapper.UnityComputeGPU instead.
GIBreaking
Added: Added Graphics.disableDepthAndStencilBuffers, a read-only property that returns whether Disable Depth and Stencil Buffers is enabled in Player Settings.
GraphicsAPI change
Added: Added SystemInfo.supportsPrecompiledGraphicsStateStats, which reports whether the current graphics device can return precompiled graphics state statistics. It is false on every graphics device that does not expose them, and the statistics are all zero in that case.
GraphicsAPI change
Added: Added UnityEngine.Rendering.PrecompiledGraphicsState.GetStats, which returns statistics of the precompiled graphics states usage for the current graphics device (if supported).
GraphicsAPI change
Deprecated: Deprecated the C# APIs associated with Baked Occlusion Culling. They continue to work but now produce compiler warnings and will be removed in a future release. Consider migrating to GPU Occlusion Culling where supported.
GraphicsBreaking
Deprecated: Deprecated the OcclusionArea and OcclusionPortal component APIs. They continue to work but will be removed in a future release. Consider migrating to GPU Occlusion Culling where supported.
GraphicsBreaking
Added: Added MemoryLabel.Create
KernelAPI change
Added: Added LicensingUtility.HasPro, HasEduLicense, IsPersonal, and GetAuthToken, which replace the deprecated license helpers on UnityEditorInternal.InternalEditorUtility.
LicenseBreaking
Added: EntitlementGroupInfo.TryGetExpirationUtc (not yet used, except in tests) for reading an entitlement group's expiry as a DateTime.
LicenseAPI change
Changed: Moved the licensing API from the UnityEditor.Experimental.Licensing namespace to UnityEditor.Licensing. Existing code is updated automatically when the project is imported.
LicenseAPI change
Deprecated: Deprecated the license helper methods on UnityEditorInternal.InternalEditorUtility.
LicenseBreaking
Removed: Removed UnityEditorInternal.InternalEditorUtility.GetLicenseFlags, which already produced a compile error when used.
LicenseBreaking
Added: Added "currentSpringForce" to "PhysicsDistanceJoint", "PhysicsSliderJoint" and "PhysicsWheelJoint", and "currentSpringTorque" to "PhysicsHingeJoint".
Added: Added "origin" overloads to the cast queries "PhysicsWorld.CastShape", "PhysicsWorld.CastShapeProxy" and "PhysicsWorld.CastGeometry", so the cast geometry can be authored in a local frame and positioned by a world-space point.
Added: Added "origin" overloads to the overlap queries "PhysicsWorld.TestOverlapShape", "PhysicsWorld.OverlapShape", "PhysicsWorld.TestOverlapShapeProxy", "PhysicsWorld.OverlapShapeProxy", "PhysicsWorld.TestOverlapGeometry" and "PhysicsWorld.OverlapGeometry", matching the cast queries.
Added: Added "PhysicsBody.drawDepth" and "PhysicsBody.SetDrawDepth3D()" to set the depth a body is drawn at when it has no transform object.
Added: Added "PhysicsBodyDefinition.drawTarget" and "PhysicsBodyDefinition.drawDepth" so a body can be created with its draw target and draw depth.
Added: Added "PhysicsConstants.MaxBounceIterations" and "PhysicsConstants.MinMaximumLinearSpeed".
Added: Added "PhysicsWorld.bounceIterations", "PhysicsWorld.bouncePropagation" and the matching "PhysicsWorldDefinition" properties, to control how bounces are resolved.
Added: Added "WorldProfile.bounceImpulses", also shown in the 2D Physics Profiler module.
Changed: The batch and span setters on "PhysicsBody", "PhysicsShape" and "PhysicsJoint", along with "PhysicsWorld.Simulate", "PhysicsWorld.DrawShapes", "PhysicsSpace.SetBatchProxyAABB" and "PhysicsSpace.SetBatchProxyCategories", now return the number of items ignored because they were invalid and log a single warning when any are ignored.
Physics 2DAPI change
Deprecated: Deprecated "PhysicsWorld.elementDepth" and "PhysicsWorld.SetElementDepth3D()" in favor of "PhysicsWorld.drawDepth" and "PhysicsWorld.SetDrawDepth3D()". The old names upgrade automatically.
Changed: Changed SerializedProperty.numericType to report the underlying integer width instead of Unknown for FileSize, Type*, and EntityId fields.
SerializationAPI change
Changed: Changed SerializedProperty.propertyType to report Integer instead of Generic for fields whose serialized type is FileSize or Type*.
SerializationAPI change
Added: Exposed additional resource binding information for shader compilation results.
ShadersAPI change
Added: Added LocalizedFontAsset, a localized reference to a FontAsset that lets UI Toolkit text change font with the locale.
UI ToolkitAPI change
Added: Added IFormattingExtensionsToggle to Smart Strings, which lets a source skip formatter extensions for the placeholder it resolved.
UI ToolkitAPI change
Added: Added ParserSettings.SelectorCharFilter and SelectorFilterType to Smart Strings. Set the filter to VisualUnicodeChars to use characters from any script in a selector.
UI ToolkitAPI change
Added: Added PluralRules.RestoreDefault to Smart Strings, which restores the built-in pluralization rules.
UI ToolkitAPI change
Deprecated: Deprecated UnityEditor.WebGLLinkerTarget and WebGLWasmArithmeticExceptions enums.
WebBreaking
Obsoleted: Marked PlayerSettings.WebGL.memorySize as obsolete.
WebBreakingWebGL
Removed support for Mono-based Android players
AndroidBreaking
Renamed the "Build App Bundle (Google Play)" build setting to "Build App Bundle".
Updated the Android Gradle Plugin (AGP) version from 9.0.0 to 9.1.1.
AndroidChange
Removed support for x64 and Universal Simulator architectures.
Apple TVBreaking
Asset Import: Changed how Unity picks an asset's main object, so that objects an AssetPostprocessor adds with AddObjectToAsset no longer replaces the object the importer produces. To make an added object the main object, call AssetImportContext.SetMainObject in the postprocessor. Unity reimports all assets the first time you open an existing project, and some assets might have a different main object afterwards. Refer to the Unity 7.0 upgrade guide.
Updated the asset import pipeline, so Unity reimports all assets in a project the first time you open it in this version of the Editor.
Asset ImportChange
IProcessSceneWithReport and PostProcessSceneAttribute APIs are deprecated. Use AssetPostprocessor.OnProcessScene instead so that AssetImportContext and its built-in dependencies registration is available to better support incremental builds.
Build PipelineBreaking
bee_backend now requires glibc >= 2.35 on linux (ubuntu 22.04 or later)
Build SystemChangeLinux
Burst now compiles macOS players for Apple Silicon only, and the Burst AOT Settings no longer offer x64 CPU architectures for macOS.
BurstChangemacOS
Structs with auto-layout can now be used in Burst as long as they are not a part of a method's signature or a job's struct. This allows tuples to be used in structs that don't cross the managed-native barrier again.
BurstChange
Update the native Selection API to use ObjectPtr instead of ObjectRef.
CoreChange
Removed experimental label from CoreCLR
CoreCLRBreaking
Changed the Editor preferences folder to Editor-7.x, which is seeded on first launch by copying the existing Editor-5.x folder so that earlier Editor versions keep their own preferences.
EditorChange
Changed the Project Auditor Suppressed Issues preference to also accept spaces as a delimiter between issue IDs, in addition to commas and semicolons.
EditorChange