Unity 6 is the latest version of Unity. Unity 6 includes all the features from Unity 6 Preview, 2023.2, and 2023.1.
To find out the changes and known issues in this version of Unity, refer to the Unity 6 Release Notes.
To find the release notes for other releases, refer to the Unity download archive.
If you are upgrading existing projects from 2022 LTS, read the Upgrade Guide to Unity 6 for information about how your project might be affected.
Review the new features and improvements of Unity 6 in these areas:
Rigidbody2D.Slide
method which allows a Rigidbody2D to move with a specific velocity over a specific integration time and perform various slide, gravity, slip, direction-change, and surface-anchoring behaviors automatically. This method works on all body typesDefines a fixed behavior for a 2D Rigidbody. Can be Dynamic (the body moves under simulation and is affected by forces like gravity), Kinematic (the body moves under simulation, but and isn’t affected by forces like gravity) or Static (the body doesn’t move under simulation). More infoRigidbody2D.MovePosition()
. This feature makes Character ControllersA simple, capsule-shaped collider component with specialized features for behaving as a character in a game. Unlike true collider components, a Rigidbody is not needed and the momentum effects are not realistic. More infoAdded a new Editor window, the Accessibility Hierarchy Viewer, that displays the active accessibility hierarchy and its nodes. To access the Accessibility Hierarchy viewer, go to Window > Accessibility > Accessibility Hierarchy viewer in the main menu.
IPerformanceModeStatus
to retrieve performance mode and listen to performance mode changes.Added capability to Asset Bundles that target Windows, OSX, and Linux platforms and the Dedicated Server subtarget so that they’re now built with the same Dedicated Server optimizations that built Dedicated Server Players receive (removing texture data and non-collision mesh data).
Implemented accessor for saving data to .meta
files.
Added Verified Solutions program, a library of third-party assets and solutions that Unity curates.
-upmLogFile
command line argument that specifies a custom file path for UPM log output. For more information, refer to Unity Editor command line arguments.Additional App IDs
to Steam ID Provider Editor Settings for Multiple App ID support.PropertyCollectionAttribute
, which you can use to implement custom drawers for collections.focusedWindowChanged
callback to the EditorWindow
class.OneTimeSetup
and OneTimeTearDown
durations in the XML result under outputs.Added an option to force Gamma rendering for the UI Toolkit in linear color space projects.
Gradient
, AnimationCurve
, ToggleButtonGroupState
, Unsigned Int, and Unsigned Long.PropertyField
for ToggleButtonGroupState
serialized properties.Removed dependency on Legacy Text stack for IMGUI so that IMGUI now renders and calculates its metrics using TextCore. Some members from TextEditor have been deprecated to accommodate for the new TextUtilities used by both IMGUI and UITK. Their meanings are the same but their names have changed (from field to property):
TextEditor.multiline
is now TextEditor.isMultiline
.TextEditor.hasHorizontalCursorPos
is nowTextEditor.hasHorizontalCursor
.TextEditor.revealCursor
is now TextEditor.showCursor
.UnityObjectRef<>
to enable unmanaged references to Unity assets. For example, instead of a Texture on a managed IComponentData, you can have a UnityObjectRef<Texture>
on an unmanaged IComponentData
.IComponentData
ISystem
IJobEntity
EntityQuery
using WithNone<T>
on an enable component wasn’t inserting a necessary job dependency.EntityQuery
singleton methods now correctly handle cases where the query contains enableable components.System.API
.Moved Unity 6 documentation for the Universal Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary (URP) to the Unity Engine manual. For example, documentation about lighting in URP is now in the Lighting section of the manual.
RayTracingShader.Dispatch
, but the three dispatch dimensions are retrieved from a GraphicsBuffer. Added RayTracingShader.DispatchIndirect
and a new CommandBuffer.DispatchRays
signature. Added SystemInfo.supportsIndirectDispatchRays
capability status.BatchRendererGroup
API to draw GameObjects with GPU instancing. This reduces the number of draw calls and frees CPU processing time.BatchRendererGroup
API. You can use this setting to cull specific batches.IRenderPipelineResources
interface that allows you to add new settings groups in the Graphics Settings window. Updated the default IRenderPipelineGraphicsSettings
Inspector to trigger notifications when a value in Graphics Settings is modified, and added a custom menu in IRenderPipelineGraphicsSettings
.CustomPostProcessOrder
.BatchCullingContext.cullingFlags
to specify whether to cull lightmapped shadow casters.rendererPriority
support for BatchRendererGroup
.CommandBuffer.BuildRayTracingAccelerationStructure
commands. Added support for RayTracingAccelerationStructure
to RenderGraph and Render Graph Viewer.RayTracingAccelerationStructure
, or via the Renderer settings.BakeTexture
and BakeTrailsTexture
scripting methods.SystemInfo.supportsInlineRayTracing
, SystemInfo.supportsRayTracingShaders
, ComputeShader.SetRayTracingAccelerationStructure
, and CommandBuffer.SetRayTracingAccelerationStructure
(ComputeShader, …).#pragma require inlineraytracing
to compute shaders.RayTracingAccelerationStructure.AddInstance
signature that allows adding mesh instances to the acceleration structure for GPU ray tracing. This is the equivalent of Graphics.RenderMesh
from the rasterizationThe process of generating an image by calculating pixels for each polygon or triangle in the geometry. This is an alternative to ray tracing.ImageConversion.LoadImage()
.ScriptableRenderContext.CullShadowCasters
API to kick theBatchRendererGroup culling jobs earlier in URP and HDRP.For a complete description of new features and improvements in URP, refer to What’s new in URP.
Added the 8192x8192 option to Shadow texture resolution for the Main Light and Additional Lights.
Added the camera history API which lets you access per-camera history textures and use them in custom render passes. History textures are the color and depth textures that Unity rendered for each camera in previous frames.
Added Adaptive Probe Volumes (APV) Lighting Scenario Blending to URP.
Added a new config package that lets you override the maximum number of visible lights.
Added the Render Graph Viewer window. This tool lets you visualize how render passes use frame resources, and debug the rendering process.
The Rendering Debugger now contains a Mipmap Streaming section. This section lets you inspect the texture streaming activity.
Added C# script templates to create custom post-processing effects that use a volume component.
Added APV sky occlusion support for URP.
Added support for Spatial Temporal Post-Processing (STP) upscaling.
The new render graph system improves the way you customize and maintain the render pipeline. The system reduces the amount of memory URP uses and makes memory management more efficient.
This URP version implements the Alpha Processing setting. If you enable this setting, URP renders the post-processing output into a render textureA special type of Texture that is created and updated at runtime. To use them, first create a new Render Texture and designate one of your Cameras to render into it. Then you can use the Render Texture in a Material just like a regular Texture. More info
See in Glossary with an alpha channel. In previous versions, URP discarded the alpha channel by replacing alpha values with 1.
Added cross-platform HDRhigh dynamic range
See in Glossary display support. The Editor and built Players now provide full HDR tone mapping and display support, across all rendering pipelines and platforms that support HDR, including mobile and XR.
Added per-vertex quality levels for indirect lighting from Probe Volumes so that URP renders lit environments more efficiently. On mobile platforms URP doesn’t support Lighting Scenario blending or Lighting Normalization for Reflection ProbesA rendering component that captures a spherical view of its surroundings in all directions, rather like a camera. The captured image is then stored as a Cubemap that can be used by objects with reflective materials. More info
See in Glossary.
Added the Camera And Objects option in the Motion Blur volume component. The option uses motion vectors to blur objects that move faster than the camera’s exposure time.
Added support for additional directional light cookies.
Added the Default Volume Profile field to URP Global Settings.
Added the Volume Profile field to the Universal Render Pipeline Asset.
Added alembic velocity motion vector support for URP materials.
Added automatic time-based motion vector generation for Shader Graph shaders with vertex animation based only on the Time node.
Added support for XR rendering and orthographic projection cameras to Forward+ rendering pathThe technique that a render pipeline uses to render graphics. Choosing a different rendering path affects how lighting and shading are calculated. Some rendering paths are more suited to different platforms and hardware than others. More info
See in Glossary.
Added support for foveated rendering in the Forward+ rendering path.
Added temporal anti-aliasing (TAA) support. The feature is not compatible with MSAA, Dynamic ResolutionA Camera setting that allows you to dynamically scale individual render targets to reduce workload on the GPU. More info
See in Glossary, or Camera stacking. The feature supports only fixed resolution, and does not support temporal upsampling.
Added support for High Dynamic Range (HDR) output.
Added the Detailed Stats section to URP Rendering Debugger.
Ported all URP passes to use the RasterCommandBuffer API.
Added the AO Method property to SSAO settings where you can select the options Interleaved Gradient Noise or Blue Noise.
Added the Blur Quality property to SSAO settings where you can select the options High (Bilateral), Medium (Gaussian), or Low (Single-Pass Kawase).
Added the Falloff field to SSAO settings to control the distance from the camera where the AO effect is applied.
Added the clustered reflection probe support to the URP Forward+ rendering path. This enables the use of more than two reflection probes per object, allows Unity to skip per-object culling of lights and reflection probes, and enables Entities Graphics and procedural draws to make use of reflection probes.
Added the low-code Custom Post Processing feature in URP.
Added Decal support to render graph API.
Added render graph API support to URP post-processing effects.
Added support for shadow rendering to 2D objectsA 2D GameObject such as a tilemap or sprite. More info
See in Glossary, such as sprites, collidersAn invisible shape that is used to handle physical collisions for an object. A collider doesn’t need to be exactly the same shape as the object’s mesh - a rough approximation is often more efficient and indistinguishable in gameplay. More info
See in Glossary, sprite shape, and 2D animation.
Added soft shadow rendering to shadow-casting 2D lights.
Added a limited support of Probe Volumes, with no interpolation of lighting data sets, and limited performance on lower-end hardware.
Improved FXAA quality. The new implementation provides better edge anti-aliasing (removing odd edge artifacts seen with the previous implementation) and better retention of texture quality. The improvement does not affect performance. The output quality is now comparable to the low and medium SMAA presets but with better performance.
For a complete description of new features and improvements in URP, refer to What’s new in HDRP.
Unity 6 Multiplayer features are designed to simplify and accelerate multiplayer game development in a way that prepares you for future integration with Multiplayer Services and supports the growth of engaged player communities over time.
The new Multiplayer Center makes it easier to set up and develop multiplayer games. Prompts and workflows use parameters and requirements for your game to suggest relevant packages and services before generating dynamic templates you can use to start your project.
You no longer need to leave the Editor to set up a multiplayer game. Personalized interactive guidance, educational materials, and shortcuts make it easier to experiment and respond to feedback early and often.
New Multiplayer Widgets make it easier to integrate Multiplayer Services into your multiplayer game. You can access the widgets as a standalone package or from the new Multiplayer Center.
Included widgets for services such as Multiplay, Relay, Lobby, Vivox make it easier to find compatible, relevant integrations. For example, integrating the Relay service into the Editor makes it easier to create sessions and connect users earlier in the development process.
The newly released Multiplayer Services package makes it easier to manage dependencies across multiplayer services. For example, you can:
To make configuration easier, sessions now integrate directly with Netcode for GameObjects, Netcode for Entities, and the Unity Transport package.
The Multiplayer Tools package version 2.2.1 improves workflows for multiplayer game development in Unity, performance with Netcode for GameObjects 2.0, and adds support for Distributed Authority.
Updated the Multiplayer Tools package to version 2.1.0, adding Network Scene Visualization as a new visual debugging tool. For more information, refer to the Multiplayer Tools documentation.
The Multiplayer Play Mode package is designed to reduce iteration cycles, make it easier to validate implementation choices, and improve gameplay quality early across runtime processes.
New Play Mode Scenarios in Unity 6 integrate test cycles into production environments to help you deliver a first-playable experience with real players earlier.
Updated Multiplayer Play Mode to version 1.0. Use it to test multiplayer functionality without leaving the Unity Editor. For more information, refer to the Multiplayer Play Mode documentation.
The Dedicated Server package consolidates the dedicated game server workflow in the Editor to make it easier to deploy dedicated servers locally and to Multiplay hosting.
New Multiplayer roles give you control over which multiplayer role (Client, Server) you use in each build target:
Released the Dedicated Server package that you can use to switch a project between the server and client role without the need to create another project. For more information, refer to the Dedicated Server package documentation.
Netcode for GameObjects is a high-level networkingThe Unity system that enables multiplayer gaming across a computer network. More info
See in Glossary library built for Unity for you to abstract networking logic.
Netcode for GameObjects version 2.0 now supports Distributed Authority (Beta) and includes improvements to promote best practices in multiplayer game development. For information about basic Netcode for GameObjects features with practical examples for individual APIs and systems, refer to the Multiplayer Use Cases Bitesize Sample.
NetworkManager.OnConnectionEvent
, -ServerIsHost
, -InstantiateAndSpawn
, and more.GlobalObjectIdHash
value for prefab instances in the scene that existed before they had a NetworkObject
component. This property affects all scenes included in the build list.NetworkManager
methods SetPeerMTU
and GetPeerMTU
to give full control over Maximum Transmission Unit (MTU) sizes. Use this for custom protocols in Netcode for GameObjects.GlobalObjectIdHash
) to fix issues where Unity assigned invalid values.GenerateSerializationForTypeAttribute
method that you can apply to any class or method to ensure the specific type is included in the codegen serialization process.GenerateSerializationForGenericParameterAttribute
method that you can use to include generic type(s) wrapped by a NetworkVariable
type in the codegen process.NetworkVariableSerialization
methods to improve custom NetworkVariable
creation without any boxing cost. You can use the NetworkVariableBase.MarkNetworkBehaviourDirty
method to mark NetworkVariables as dirty.NetworkBehaviour
types can now serialize parameters of the class’s generic types.NetworkManager
events OnServerStarted
, OnServerStopped
, OnClientStarted
, and OnClientStopped
to provide better notification of the NetworkManager
initialization process.The Netcode for Entities, part of the Unity’s Data Oriented Technology Stack (DOTS), provides a server authoritive with client prediction framework that you can use to create multiplayer games.
Netcode for Entities version 1.3 includes several usability improvements and the new Megacity Metro demo game which shows how Unity 6 makes setting up multiplayer services, networked vehicle implementation, configurable rule-based matches, and immersive player communications faster and easier.
OverrideAutomaticNetcodeBootstrap
MonoBehaviour to your first build scene.AlwaysRelevantQuery
that you can use to specify general rules for relevancy without specifying it ghost by ghost.Added BatchScaleImportanceDelegate
, a new version of the importance scaling function that works in batches. It is not required to set both the ScaleImportance and the BatchScaleImportance function pointers. If the BatchScaleImportance is set, it is the preferred.Improved the behavior of Project manifestEach Unity project has a project manifest, which acts as an entry point for the Package Manager. This file must be available in the <project>/Packages
directory. The Package Manager uses it to configure many things, including a list of dependencies for that project, as well as any package repository to query for packages. More info
See in Glossary files by repopulating them with default dependencies if the files are empty or full of whitespace.
.aab
files to the Google Play Store. You have an option to upload the symbols package separately as a zip file with your .apk
or .aab
files. You can create symbol files with .so.sym
or .so.dbg
and the legacy .so
extensions..androidlib
Plug-inA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More infounityLibrary
. You can now configure .androidlib
to depend on unityLibrary
, and thus expand an activity by overriding UnityPlayerActivity
.com.unity.addressables.android
) to provide Play Asset Delivery support for Addressables.ApplicationExitInfo
API to provide information on application crashes and application not responding (ANR) errors.GameActivity
as the default application entry point to provide more control over the interaction between Android and your application.build_fingerprint
information to Android builds..xcframework
plugins support.Added support for Apple’s visionOS platform.
LocationService
methods and properties in Web platform:
Start()
Stop()
isEnabledByUser
lastData
status
Added the ability to copy and paste to and from the Unity player.
GetLastHeading()
SetHeadingUpdatesEnabled()
IsHeadingUpdatesEnabled()
GetHeadingStatus()
IsHeadingAvailable()
Added support for the Compass API.
Added support for mobile browsers.
Implemented the Emscripten 3.1.38 toolchain.
Content-Encoding: gzip
is not properly set on server, or when a web browser has a bug that prevents it from being able to decompress gzip content.Enabled Windows ARM64 Player compilation. For more information, visit the System Requirements page.
ArticulationBody.jointPosition
pointer lines to the JointA physics component allowing a dynamic connection between Rigidbody components, usually allowing some degree of movement such as a hinge. More infoReleased version 1.1.0 of Memory 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. Refer to the Memory Profiler package documentation for details.
Added functionality to control player connection listen port.
Added an option to display C# source code line numbers in call stacks in player builds.
The Ray Tracing API is officially out of experimental status in Unity 2023.1. The Ray Tracing API includes stability and performance improvements to additional compatibility with the engine’s existing feature setA feature set is a collection of related packages that you can use to achieve specific results in the Unity Editor. You can manage feature sets directly in Unity’s Package Manager. More info
See in Glossary.
Use Sentis to run machine learning models directly within Unity applications and make use of the real-time AI-driven features for optimized performance. To learn more, refer to the Sentis documentation.
Added a new set of Production Ready sample content shaders to the Shader Graph package.
Variant Keyword Prefiltering introduces the early exclusion of “multi_compile” keywords, based on Prefiltering Attributes driven by Render Pipeline settings. This greatly reduces the amount of variants being enumerated for potential stripping and compilation. The result is a significant reduction in shader processing time.
Added the SpeedTree9Importer, which supports .st9 files exported by SpeedTree Modeler 9 and includes the following:
.cg
), URP, and HDRP renderers (.shadergraph
).Improved SpeedTree visual quality in HDRP using a Transmission Mask to apply subsurface scattering only on leaves. HDRP/Nature/SpeedTree8.shadergraph to use its Subsurface Map for the Transmission Mask node to remove the unintended light transmission from tree barks and twigs. This also fixes the overly bright billboardA textured 2D object that rotates so that it always faces the Camera. More info
See in Glossary lighting not matching the 3D geometry’s lighting.
HDRP/Nature/SpeedTree8.shadergraph
now uses its Subsurface Map for the Transmission Mask node to remove the unintended light transmission from tree barks and twigs. This also fixes the overly bright billboard lighting which didn’t quite match the 3D geometry’s lighting.
You can now store personalized data on Spline objects. Additionally, the interface for editing points in the Inspector has been enhanced and certain APIs have been made available to the public. When you work on splines, you can now use the new Scene view context menu.
-randomOrderSeed x
, where x
is an integer different from 0. If a new test is added to the project, the Test Framework keeps the random order passing the same seed, and places the new test in the random list accordingly.TestFileReferences.json
to generate on a build step of the player, so that Test runners can consume it to enrich data for the run step.Added a new tab view to list and manage locks in the Version Control feature of Unity.
Added a project option to support tracking packages that exist on disk outside of the project’s root folder.
ShaderKeyword
declared in Shader Graph.Added support for Foveated Rendering on Vision Pro.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.
When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
More information
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising. Some 3rd party video providers do not allow video views without targeting cookies. If you are experiencing difficulty viewing a video, you will need to set your cookie preferences for targeting to yes if you wish to view videos from these providers. Unity does not control this.
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.